<#0j!zTbhlEZ52)MAGKH6IN#Dpe(GOrFUem*qKJfwT-u9pS
zs#YXvv$6iX8@7}0a7|Dpe!zb>s_P8KVC@*rU`p5$1?4%8b4{PjcXk;Uiz386PiLK&
zLgN%B3F;p<-ZLcop;wugo`KXnQn!fFVVh_tF+m=IT8VNNI^zBbYK+*jD-b|0S2z99
zD9x4AgOT8hlRp|^zzm&0@#W?kkt_2(e@yL#)lWg+>ad2Cv8>J_02#;R`?-Dmrz4yr
zWIKE)JuE+E?sDr^aQesn64i;pNRgH-7T#ORwxEW>fD?o@(YFv43kR-T^It44$c
z;kUP|o8V$>hAFqnfEVgIrN;4KplGEX0_zs=(y>-gKA1_y=}BswbM=I^Tgj@6>xFZ3
zp`bH*P$Pg=>n02oED41`yYLCO+
ze9A+C5E>$w^ch{}Fpc4Zn3^77T%jTn4Y0;md5{bmD&F?f4?4(%1&AQ3sXl2vYX
zaDqZJ^lNprsT}6n2!d9;Gk4A4{&R
z)&oHTS&1=IaB22*XsxWTj`nQIHc1{H%G1jk_E`Hi!7;PEo*(&H!wMEOO{5kY+;%
zRz3$A>5Yh&?cdqOHPVbU0B%*-*P}64L%wD`@EhFp#*Z
zgpHYE+|w#FKHx&Bp#s3YmH1QIW!dqKkH25=(V)^A9D4w)VF7sCb)QHaQUtuP^3h;(
zE*yPigS6xL%pzCh+3J+mX(LboF-L;XR?W#z&UPU;`q|=08~7+_S6{&@7P^$VPpwO@
zspY;JE{$^lL2>O*%VHr{xr^1ze%!+=F0ow2LjN0Iy>2{iU*|9akf-5Z)BsA8^(%G-
z!|ZB}&RgJ);+WbD{2*;EU(NhkcmyM&1!c*q-=P5@;qUVU0O$2{!FYj`+kJEW#X9sL
z7=vw6bM;&*t{wqC1&^a1`z5DQH}In;o&Z-DE=2+Kt>nYWCdL8Zjy^g=L@arH-+Wp{
zT$IMGnuSL3Q*he@`3Dhm19}t#TP;1gaXYr%1Rt4JYEU6IJ1iSEht6yoWNkx*Rl*{R~lO{5TI6Zq6a&p~WJeBc>yTet0_sHO773Qrk!$o();
zd=-3J-P`|VU9yPjg>chVu4gHb+n?*2E?<`VfV5q-_l7%wFy3QbT?|++zWx$VbNBKh
zCh1s2G1s;@N$s=kTmJY3K}`3HC#}j{#KTw*?A1SAp79cnW!TYKsMg2|Wp{iR;_R2E
z;m)d-&NW=qsJmbPBz5E#++A(={7{qOd~*86y}uz-*!7~8Qa+u^3u{_M!C5+(F0$rA?UH>kC>i@v=LYYW090?Q2~Uqjk~Ze89_5&4XN{I!Wh
zBXRtfOFEvqyq5>aSX`XiVIoDzlQA+klCm~_MLyBZ_UW0s7n2=DM~{44bD2pPP9bSe
z$5Iayb;RofuxpGY{CGCtOWe?9#((FMJ(RlET!P6Q!!(DjBTa8!SV#5;a*kaF%Da=d
zhp4G3km%+(n3WSym*W}&I4gxLCW^+2EgHi(6IF6OZy5}74(C2=)}E7yvXLUlFu0Ai
zxrR;f8xRzJ6?E@Uh?opauiIAX1SIy@OOjFfO^N8Cz#s@sSX#TmtR>J!nkbOv-|PgJ
z0U(jP#g>C%HwUhhB98^cJ1Y6deZW{uTr{yzavvSV!R%+M#XUq~pzWMY9Us8VviScl+`%tUsqvsQ5$D29Rcbu_26w{wFE##$Lwet~
ztA8q6GK0?zf0(|OefPu9S(yJXHNMSYck#avEGjhk|AtZjp9q!{M*k-oyvlO)zoWs0
zR#Q_SKL7t{@V^>M|LqeosOop}67$6+`0?e1T3z`O44h#APlgKG4A7q1n3y~iI9VB{
z{AXn;&HJq>_%}!Wokj0o@y|T{w!aC8j~nMI(L)r~0soFdBmW9-s?xBk)}j9lZ~pC`
zVQUaXa*G{E;lFx^OxY~INx7co?ow^ke2>4TgSkEW^ImiG1NWOBb+l9cj%Y0{q8^zS
z|M1jBxK=eCXax5!udVN|U3}E+c+i9Dz58}n#Epci_Or*om;2zyrQo9~28&UqSJS(4
zOx*K^>#tXx#$%t5WhzwG&ks1>lb6;oUHRkqMog)*dMiN
zCp}N!QcBOivhGnx!KUH>6TetilF9BER%pj=wI9ujBE5tCxZ)o66tYCxeeC)zbd980B`YEif*eaS#Qw(?YGx{B1sWZnU~jSf`af
z9VNmCm~QPF&sKkHQ$u}21ZUHQ5WNU^j~6{7EFZEa
z;=JZ8b$^%rhV66LFl6c{wAzN@K`5M)@M|d3z|q_vvqEi*V1Tn1t6z-F$sEe9Q(`X}
zupzsQTq)EBETnDy{k@6tG548n5+J-YJ%t?W+6>D^_NFvFFDJ!_^ZGWSu&b2Ew@DO;
z?_=m~fqKUgT4{@@D%QP56o69MHf&DG2&<;OU%d1eW44HekB+UT>vP-pG;*<_JOMVG
zCpJ&k%zNa0R6d(2b~b7d;a?%EzHea&TxjR#S`P`xWxWfis1h~z%&H(Arm%XhGJp9~
zXhH?;Ao2!GRb}Px+ITlCON)1Kp$qK
zHC})rI$YExJMuLbpYr#R2u~i=+S@eGOFeCFV2KZ;p{q2Y-#UczNhvkmreuHd3v{Ns
zP93m{Vw>BxnA4u09|~ioITlFzh4c4c4S!_49-Y%8_w@%fUIZo
z+lOWguul~g0j~rqCy!8G&n0+H1FX{>fVw&hskye!hY>WeJK}Q{t*_3{<@P}Cdp44-
zDvj)74VE7Le9B^JJuRJ+r}}Oca+;6hK!T%BKG(SR)dwd9-7`*%t0WDv)l-7*SLv@r
zIV6rOWCOUPMqlbV$6sX(wIXZ%zBKsyvKy-wfOPJc)4mVD*~HbD(}FLJE?Lozv+%>F
zQ72?wfVnD}`tZsiASxXftbT)kXbYGenLA`1dHzc7G4K;kxb+SClvu961v_~qOS2S}B}djt?@
zbm+o?9B9p+3qW_o!wYe?ZXhnxRUXU^Nh_ANeJ>9fB-$~C^VL;nyDXU2|l
zk3WJlluT-8OExXC*CVc5&m*c|-=sGS;o>B9SdpAZHLb#q2Gtl`SR1?8MTUJtNv@53
zD+GKFR4p;QoJ)-wGwg4s>(sTYc`!xh>cCDvGnr^*F^&s)sdv6Rfw>Lg(6paJAOw@J
ztXRLF@D*K47D83(7H7>;kH*c9kWU^YIvMm)f3p#?4AOiQ|H;GP=JFe*-DmG}A7!6q
znxrTP_jp8+Uj@6M<}e>NT)Jvq1hcCP`xEv&Wr5RoQZIii7Cp+!;fB$BltKqK0wJ
zP)^IuN7rcpt9-7VaGp^Ecf6#W^;~~8vT~Ztd_gLs4;UtS>v7I14a>(&)VK5}wN}NAF^3_`_#W-I)v+;xC9X?5@
zEWVRu8!Y+JbLaZ37gPGH>Kv=I2#1)aN>}FcBr`s}X|%79IXs>$|BrdvGEfKjhyc&1S<{;Ncts&u2cIc`Gb|z|T>Z@ohGN
z?$YcH6GSLH+r)JdQkwE03{%nUN}Bee02zvJ2^OwGzj5$QGx9(_$+9KOnrCm&l8t5v
zX*?et0QH7}E~zE4Ei%2QZT}3*+8_bW9TEoidaFsZA73Jc@G_Ry*#ye?=N};puz7A4
zo>*+Q94m^q@L+^xxpPx>NqMy{dF_t*=O=)f8gd$KS9-Yhd~v2`zZp!+|5}BKaowq@
z5XT141b&}U*Yd+Sbp>Cm!1Gw44XGf*rJ&srr726<&&=2@DhzapNFsr|U3Qu)$Q5;|
zlEc~yh%|K$+U{_IBN4lRRJ6mTsC_$z!4W)oh}b|xtuFAZb6up)K^PN(CSSg*U-ccPevF7aWM=so}uyxlJjq7Xx=FD_$^fgFrd__{i4I2D)(
zi}a8pqBduQ!|=;)WJGGZxi}BegcH}MV#LUlmh~PS
P&?Vqncwd}qdT{>-iX
Date: Mon, 28 Nov 2022 19:44:02 +0100
Subject: [PATCH 7/8] Caching favicons locally
---
.gitignore | 1 +
app/Http/Controllers/UserController.php | 11 ++++++++-
.../components/favicon-extension.blade.php | 14 +++++++++++
resources/views/components/favicon.blade.php | 24 +++++++++++--------
.../pageitems/link-display.blade.php | 5 +++-
resources/views/home.blade.php | 7 ++++--
resources/views/littlelink.blade.php | 7 ++++--
.../views/studio/button-editor.blade.php | 9 ++++---
resources/views/studio/links.blade.php | 5 +++-
routes/web.php | 3 ---
10 files changed, 63 insertions(+), 23 deletions(-)
create mode 100644 resources/views/components/favicon-extension.blade.php
diff --git a/.gitignore b/.gitignore
index 6bdb75e..07d4177 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+/studio/favicon/icons
/node_modules
/public/hot
/public/storage
diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php
index a950b3a..821fad7 100755
--- a/app/Http/Controllers/UserController.php
+++ b/app/Http/Controllers/UserController.php
@@ -390,7 +390,16 @@ class UserController extends Controller
Link::where('id', $linkId)->delete();
- return back()->with('success', 'Link Deleted');
+ $directory = base_path("studio/favicon/icons");
+ $files = scandir($directory);
+ foreach($files as $file) {
+ if (strpos($file, $linkId.".") !== false) {
+ $pathinfo = pathinfo($file, PATHINFO_EXTENSION);}}
+ if (isset($pathinfo)) {
+ try{File::delete(base_path("studio/favicon/icons")."/".$linkId.".".$pathinfo);} catch (exception $e) {}
+ }
+
+ return redirect('/studio/links');
}
//Raise link on the littlelink page
diff --git a/resources/views/components/favicon-extension.blade.php b/resources/views/components/favicon-extension.blade.php
new file mode 100644
index 0000000..c01b06d
--- /dev/null
+++ b/resources/views/components/favicon-extension.blade.php
@@ -0,0 +1,14 @@
+
diff --git a/resources/views/components/favicon.blade.php b/resources/views/components/favicon.blade.php
index 6a40ce6..c054a9a 100644
--- a/resources/views/components/favicon.blade.php
+++ b/resources/views/components/favicon.blade.php
@@ -1,3 +1,4 @@
+
link;
try {
$urlICO = $url . "/favicon.ico";
$urlICO = str_replace("//favicon.ico","/favicon.ico",$urlICO);
@@ -2429,16 +2432,17 @@ foreach($dom->find('link') as $e)
}
} catch (exception $e) {$favicon = url('littlelink/icons/website.svg');}
+
+
+try{
+$header = $favicon;
+$extension = pathinfo($header, PATHINFO_EXTENSION);
+if(!file_exists(base_path("studio/favicon/icons")."/".$id.".".$extension)){
+ if($id.".".$extension !== ".".$id){file_put_contents(base_path("studio/favicon/icons")."/".$id.".".$extension, file_get_contents($header));}
+}
+} catch (exception $e) {exit();}
+
return $favicon;
}
-?>
-
-
\ No newline at end of file
diff --git a/resources/views/components/pageitems/link-display.blade.php b/resources/views/components/pageitems/link-display.blade.php
index eb62b5f..1ebb583 100644
--- a/resources/views/components/pageitems/link-display.blade.php
+++ b/resources/views/components/pageitems/link-display.blade.php
@@ -3,9 +3,12 @@
@endphp
+@include('components.favicon')
+@include('components.favicon-extension')
+
@if($params->GetSiteIcon ?? true)
-
+
@endif
{{ $link->title }}
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
index 0574780..8eb936e 100755
--- a/resources/views/home.blade.php
+++ b/resources/views/home.blade.php
@@ -128,6 +128,9 @@ return $path;}
}
+@include('components.favicon')
+@include('components.favicon-extension')
+
@@ -213,9 +216,9 @@ foreach($pages as $page)
@elseif($button['button'] === "buy me a coffee")
@elseif($button['button'] === "custom_website" and ($button['custom_css'] === "" or $button['custom_css'] === "NULL") or (theme('allow_custom_buttons') == "false" and $button['button'] === "custom_website"))
-
+
@elseif($button['button'] === "custom_website" and $button['custom_css'] != "")
-
+
@elseif($button['button'] === "space")
@endif
+@include('components.favicon')
+@include('components.favicon-extension')
+
@if(config('advanced-config.display_share_button') != '')
@@ -275,9 +278,9 @@ function get_operating_system() {
@elseif($link->name === "mastodon")
@elseif($link->name === "custom_website"and $link->custom_css === "" or $link->custom_css === "NULL" or (theme('allow_custom_buttons') == "false" and $link->name === "custom"))
-
+
@elseif($link->name === "custom_website" and $link->custom_css != "")
-
+
@elseif($link->name === "space")
title) and $link->title < 10)
diff --git a/resources/views/studio/button-editor.blade.php b/resources/views/studio/button-editor.blade.php
index b27e865..f1d074b 100644
--- a/resources/views/studio/button-editor.blade.php
+++ b/resources/views/studio/button-editor.blade.php
@@ -1,6 +1,9 @@
@if(env('ENABLE_BUTTON_EDITOR') === true)
@extends('layouts.sidebar')
+@include('components.favicon')
+@include('components.favicon-extension')
+
@section('content')
@push('sidebar-scripts')
@@ -216,7 +219,7 @@ var button_css = {
@if($buttonId == 1)
@else
-
+
@endif
@@ -255,9 +258,9 @@ NULL
@if($custom_css === "" or $custom_css === "NULL" and $buttonId == 1)
@elseif($custom_css === "" or $custom_css === "NULL" and $buttonId == 2)
-
+
@elseif($custom_css != "" and $buttonId == 2)
-
+
@else
@endif
diff --git a/resources/views/studio/links.blade.php b/resources/views/studio/links.blade.php
index 6601779..12d6a2b 100755
--- a/resources/views/studio/links.blade.php
+++ b/resources/views/studio/links.blade.php
@@ -30,6 +30,9 @@
@endpush
+@include('components.favicon')
+@include('components.favicon-extension')
+
@@ -68,7 +71,7 @@
button_id); if(isset($button->name)){$buttonName = $button->name;}else{$buttonName = 0;} ?>
@if($button->name == "custom_website")
-
+
id))){{url('studio/favicon/icons/'.localIcon($link->id))}}@else{{getFavIcon($link->id)}}@endif">
@elseif($button->name == "space")
@elseif($button->name == "heading")
diff --git a/routes/web.php b/routes/web.php
index 68b8104..24e8847 100755
--- a/routes/web.php
+++ b/routes/web.php
@@ -82,9 +82,6 @@ Route::get('/@{littlelink}', [UserController::class, 'littlelink'])->name('littl
Route::get('/pages/{name}', [AdminController::class, 'pages'])->name('pages');
Route::get('/theme/@{littlelink}', [UserController::class, 'theme'])->name('theme');
-//API
-Route::get('/ico', function () {return view('components.favicon');});
-
//User route
Route::group([
'middleware' => env('REGISTER_AUTH'),
From f6d1015dd7f91e929e9c8a701bff6fb7c2bd42e7 Mon Sep 17 00:00:00 2001
From: Julian Prieber <60265788+JulianPrieber@users.noreply.github.com>
Date: Mon, 28 Nov 2022 19:47:55 +0100
Subject: [PATCH 8/8] Create .gitignore
---
studio/favicon/icons/.gitignore | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 studio/favicon/icons/.gitignore
diff --git a/studio/favicon/icons/.gitignore b/studio/favicon/icons/.gitignore
new file mode 100644
index 0000000..c96a04f
--- /dev/null
+++ b/studio/favicon/icons/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file