diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index 10bd98fd..f8fda57d 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -47,7 +47,9 @@ class ItemController extends Controller } elseif ($treat_tags_as == 'tags') { $data['apps'] = Item::with('parents')->where('type', 0)->pinned()->orderBy('order', 'asc')->get(); $data['all_apps'] = Item::where('type', 0)->orderBy('order', 'asc')->get(); - $data['taglist'] = Item::where('type', 1)->pinned()->orderBy('order', 'asc')->get(); + $data['taglist'] = Item::where('id', 0)->orWhere(function($query) { + $query->where('type', 1)->pinned(); + })->orderBy('order', 'asc')->get(); } else { $data['apps'] = Item::whereHas('parents', function ($query) { @@ -56,7 +58,9 @@ class ItemController extends Controller $data['all_apps'] = Item::whereHas('parents', function ($query) { $query->where('id', 0); - })->orWhere('type', 1)->orderBy('order', 'asc')->get(); + })->orWhere(function ($query) { + $query->where('type', 1)->whereNot('id', 0); + })->orderBy('order', 'asc')->get(); } //$data['all_apps'] = Item::doesntHave('parents')->get(); diff --git a/app/Item.php b/app/Item.php index b7bdd326..7f2f0e9b 100644 --- a/app/Item.php +++ b/app/Item.php @@ -9,6 +9,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Eloquent\Casts\Attribute; use stdClass; use Symfony\Component\ClassLoader\ClassMapGenerator; @@ -133,26 +134,33 @@ class Item extends Model $id = $this->id; $tags = ItemTag::select('tag_id')->where('item_id', $id)->pluck('tag_id')->toArray(); $tagdetails = self::select('id', 'title', 'url', 'pinned')->whereIn('id', $tags)->get(); - //print_r($tags); - if (in_array(0, $tags)) { - $details = new self([ - 'id' => 0, - 'title' => __('app.dashboard'), - 'url' => '', - 'pinned' => 0, - ]); - $tagdetails->prepend($details); - } return $tagdetails; } + protected function title(): Attribute + { + return Attribute::make( + get: fn (string $value) => ($value === 'app.dashboard' ? __('app.dashboard') : $value), + ); + } + + protected function tagUrl(): Attribute + { + return Attribute::make( + get: fn (mixed $value, array $attributes) => ($attributes['id'] === 0 ? '0-dash' : $attributes['url']), + ); + } + public function getTagClass(): string { $tags = $this->tags(); $slugs = []; foreach ($tags as $tag) { + if ($tag->id === 0) { + $tag->url = '0-dash'; + } if ($tag->url) { $slugs[] = 'tag-'.$tag->url; } @@ -161,6 +169,20 @@ class Item extends Model return implode(' ', $slugs); } + public function getTagList(): string + { + $tags = $this->tags(); + $titles = []; + // print_r($tags); + foreach ($tags as $tag) { + if ($tag->title) { + $titles[] = $tag->title; + } + } + + return implode(', ', $titles); + } + public function parents(): BelongsToMany { return $this->belongsToMany(Item::class, 'item_tag', 'item_id', 'tag_id'); diff --git a/resources/views/items/list.blade.php b/resources/views/items/list.blade.php index e5655008..db7a11a8 100644 --- a/resources/views/items/list.blade.php +++ b/resources/views/items/list.blade.php @@ -22,6 +22,7 @@ {{ __('app.title') }} {{ __('app.url') }} + {{ __('app.apps.tags') }} {{ __('app.settings.edit') }} {{ __('app.delete') }} @@ -32,6 +33,7 @@ {{ $app->title }} {{ $app->link }} + {{ $app->getTagList() }} target }} href="{!! route('items.edit', [$app->id]) !!}" title="{{ __('app.settings.edit') }} {{ $app->title }}"> {!! Form::open(['method' => 'DELETE','route' => ['items.destroy', $app->id],'style'=>'display:inline']) !!} @@ -42,7 +44,7 @@ @endforeach @else - + {{ __('app.settings.no_items') }} diff --git a/resources/views/partials/taglist.blade.php b/resources/views/partials/taglist.blade.php index 9225e095..741832fc 100644 --- a/resources/views/partials/taglist.blade.php +++ b/resources/views/partials/taglist.blade.php @@ -6,7 +6,7 @@ $treat_tags_as = \App\Setting::fetch('treat_tags_as');
All
@foreach($taglist as $tag) -
{{ $tag->title }}
+
{{ $tag->title }}
@endforeach
@endif