diff --git a/app/Models/Link.php b/app/Models/Link.php index 0409e517..e579aa1e 100644 --- a/app/Models/Link.php +++ b/app/Models/Link.php @@ -13,6 +13,8 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Facades\Http; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Str; use Venturecraft\Revisionable\Revision; use Venturecraft\Revisionable\RevisionableTrait; @@ -268,13 +270,29 @@ public function getIcon(string $additionalClasses = ''): string return ""; } - return view('models.links.partials.link-icon', [ + if ($this->hasFavicon()) $icon = 'favicon'; + return view('models.links.partials.link-icon', [ 'icon' => 'icon.' . $icon, 'class' => $additionalClasses . ' fw', - 'title' => $title, + 'title' => $title, + 'faviconUrl' => $this->url . 'favicon.ico' ]); + } + + public function hasFavicon() + { + $faviconUrl = $this->url . 'favicon.ico'; + try { + $response = Http::head(($faviconUrl)); + return $response->successful(); + } catch (\Exception $e) { + Log::error('Check for favicon failed: ' . $e->getMessage()); + return false; + } + } + /** * Output a relative time inside a span with real time information * diff --git a/resources/views/components/icon/favicon.blade.php b/resources/views/components/icon/favicon.blade.php new file mode 100644 index 00000000..e6172584 --- /dev/null +++ b/resources/views/components/icon/favicon.blade.php @@ -0,0 +1 @@ + diff --git a/resources/views/models/links/partials/link-icon.blade.php b/resources/views/models/links/partials/link-icon.blade.php index 1c60922c..7caa5b7d 100644 --- a/resources/views/models/links/partials/link-icon.blade.php +++ b/resources/views/models/links/partials/link-icon.blade.php @@ -1,2 +1,2 @@ - + {{ $title }}