From 8fa870e8eb27548969d2c1b3700f7c84e463e118 Mon Sep 17 00:00:00 2001 From: Chris Hunt Date: Sat, 17 Feb 2024 19:06:51 +0000 Subject: [PATCH] Initial commit --- app/Http/Controllers/ItemController.php | 30 +++++++++++++++++++------ database/seeders/SettingsSeeder.php | 23 +++++++++++++++++++ lang/en/app.php | 4 ++++ resources/assets/sass/_app.scss | 3 +++ resources/views/sortable.blade.php | 25 +++++++++++++++++---- resources/views/welcome.blade.php | 2 +- 6 files changed, 75 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index fa4c1ae3..a3385a73 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -35,16 +35,32 @@ class ItemController extends Controller */ public function dash(): View { - $data['apps'] = Item::whereHas('parents', function ($query) { - $query->where('id', 0); - })->orWhere('type', 1)->pinned()->orderBy('order', 'asc')->get(); + $treat_tags_as = \App\Setting::fetch('treat_tags_as'); - $data['all_apps'] = Item::whereHas('parents', function ($query) { - $query->where('id', 0); - })->orWhere('type', 1)->orderBy('order', 'asc')->get(); + $data["treat_tags_as"] = $treat_tags_as; + + if ($treat_tags_as == 'categories') { + $data['categories'] = Item::whereHas('children')->with('children')->get(); + + + $data['all_apps'] = Item::whereHas('parents', function ($query) { + $query->whereNot('id', 0); + })->orderBy('order', 'asc')->get(); + + + } else { + + $data['apps'] = Item::whereHas('parents', function ($query) { + $query->where('id', 0); + })->orWhere('type', 1)->pinned()->orderBy('order', 'asc')->get(); + + $data['all_apps'] = Item::whereHas('parents', function ($query) { + $query->where('id', 0); + })->orWhere('type', 1)->orderBy('order', 'asc')->get(); + } //$data['all_apps'] = Item::doesntHave('parents')->get(); - //die(print_r($data['apps'])); + // die(print_r($data)); return view('welcome', $data); } diff --git a/database/seeders/SettingsSeeder.php b/database/seeders/SettingsSeeder.php index 75ba8faa..9594d2fb 100644 --- a/database/seeders/SettingsSeeder.php +++ b/database/seeders/SettingsSeeder.php @@ -327,5 +327,28 @@ class SettingsSeeder extends Seeder $app->parents()->attach(0); } } + + $tag_options = json_encode([ + 'folders' => 'app.settings.folders', + 'tags' => 'app.settings.tags', + 'categories' => 'app.settings.categories', + ]); + + if (! $setting = Setting::find(14)) { + $setting = new Setting; + $setting->id = 14; + $setting->group_id = 2; + $setting->key = 'treat_tags_as'; + $setting->type = 'select'; + $setting->options = $tag_options; + $setting->value = 'folders'; + $setting->label = 'app.settings.treat_tags_as'; + $setting->save(); + } else { + $setting->options = $tag_options; + $setting->label = 'app.settings.treat_tags_as'; + $setting->save(); + } + } } diff --git a/lang/en/app.php b/lang/en/app.php index d2e166d8..bfd97649 100644 --- a/lang/en/app.php +++ b/lang/en/app.php @@ -28,6 +28,10 @@ return array ( 'settings.view' => 'View', 'settings.custom_css' => 'Custom CSS', 'settings.custom_js' => 'Custom JavaScript', + 'settings.treat_tags_as' => 'Treat Tags As:', + 'settings.folders' => 'Folders', + 'settings.tags' => 'Tags', + 'settings.categories' => 'Categories', 'options.none' => '- not set -', 'options.google' => 'Google', 'options.ddg' => 'DuckDuckGo', diff --git a/resources/assets/sass/_app.scss b/resources/assets/sass/_app.scss index 844844a8..154f7393 100644 --- a/resources/assets/sass/_app.scss +++ b/resources/assets/sass/_app.scss @@ -180,6 +180,9 @@ body { list-style: none; margin: 0; } + #sortable.categories { + align-content: flex-start; + } } #config-buttons { position: fixed; diff --git a/resources/views/sortable.blade.php b/resources/views/sortable.blade.php index a69cfa6c..7b3c9c17 100644 --- a/resources/views/sortable.blade.php +++ b/resources/views/sortable.blade.php @@ -1,6 +1,23 @@ -
- @foreach($apps as $app) - @include('item') - @endforeach +
+ @if($treat_tags_as == 'categories') + + @foreach($categories as $category) + children; ?> +
+ {{ $category->title }} + @foreach($apps as $app) + @include('item') + @endforeach +
+ @endforeach + + + @else + + @foreach($apps as $app) + @include('item') + @endforeach + @endif + @include('add')
diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 4deb09df..e7376b57 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -3,7 +3,7 @@ @section('content') @include('partials.search') - @if($apps->first()) + @if((isset($apps) && $apps->first()) || (isset($categories) && $categories->first())) @include('sortable') @else