diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index 472232635..092ac21b6 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -50,9 +50,7 @@ public function dash(Request $request): View } 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('id', 0)->orWhere(function ($query) { - $query->where('type', 1)->pinned(); - })->orderBy('order', 'asc')->get(); + $data['taglist'] = Item::taglist()->orderBy('order', 'asc')->get(); } else { $data['apps'] = Item::whereHas('parents', function ($query) { $query->where('id', 0); @@ -70,9 +68,7 @@ public function dash(Request $request): View } 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('id', 0)->orWhere(function ($query) { - $query->where('type', 1)->pinned(); - })->orderBy('order', 'asc')->get(); + $data['taglist'] = Item::taglist()->orderBy('order', 'asc')->get(); } else { $data['apps'] = Item::whereHas('parents', function ($query) { $query->where('id', 0); diff --git a/app/Item.php b/app/Item.php index c64208895..e0d96cae0 100644 --- a/app/Item.php +++ b/app/Item.php @@ -122,6 +122,17 @@ public function scopePinned(Builder $query): Builder return $query->where('pinned', 1); } + /** + * Scope a query to the tags shown in the dashboard taglist: the home + * dashboard (root tag, id 0) plus every pinned tag. + */ + public function scopeTaglist(Builder $query): Builder + { + return $query->where('id', 0)->orWhere(function (Builder $query) { + $query->where('type', 1)->pinned(); + }); + } + public static function checkConfig($config) { // die(print_r($config)); diff --git a/app/Setting.php b/app/Setting.php index 74532ef70..bfa4dd1f1 100644 --- a/app/Setting.php +++ b/app/Setting.php @@ -124,11 +124,7 @@ public function getListValueAttribute() if ($this->key === 'search_provider') { $options = Search::providers()->pluck('name', 'id')->toArray(); } elseif ($this->key === 'default_tag') { - $options = []; - $tags = Item::where('type', 1)->where('id', '>', 0)->pinned()->orderBy('title', 'asc')->get(); - foreach ($tags as $tag) { - $options[$tag->tag_url] = $tag->title; - } + $options = self::defaultTagOptions(); } $value = (array_key_exists($this->value, $options)) ? __($options[$this->value]) @@ -197,11 +193,7 @@ public function getEditValueAttribute() if ($this->key === 'search_provider') { $options = Search::providers()->pluck('name', 'id'); } elseif ($this->key === 'default_tag') { - $options = ['' => 'app.options.none']; - $tags = Item::where('type', 1)->where('id', '>', 0)->pinned()->orderBy('title', 'asc')->get(); - foreach ($tags as $tag) { - $options[$tag->tag_url] = $tag->title; - } + $options = ['' => 'app.options.none'] + self::defaultTagOptions(); } $value = '