From edd75af01b655a52c23c7ddba0d0f4d0bd630c47 Mon Sep 17 00:00:00 2001 From: Rick Barrette Date: Wed, 19 Aug 2026 08:20:02 -0400 Subject: [PATCH] update the favicon without java script --- app/views/common/_calendar.html.erb | 2 - app/views/customer_appointments/edit.html.erb | 2 - app/views/customer_appointments/new.html.erb | 2 - app/views/customer_appointments/show.html.erb | 2 - assets/images/favicons/1.png | Bin 0 -> 1209 bytes assets/images/favicons/10.png | Bin 0 -> 1898 bytes assets/images/favicons/11.png | Bin 0 -> 1296 bytes assets/images/favicons/12.png | Bin 0 -> 1832 bytes assets/images/favicons/13.png | Bin 0 -> 1949 bytes assets/images/favicons/14.png | Bin 0 -> 1586 bytes assets/images/favicons/15.png | Bin 0 -> 1846 bytes assets/images/favicons/16.png | Bin 0 -> 1978 bytes assets/images/favicons/17.png | Bin 0 -> 1581 bytes assets/images/favicons/18.png | Bin 0 -> 2001 bytes assets/images/favicons/19.png | Bin 0 -> 2012 bytes assets/images/favicons/2.png | Bin 0 -> 1632 bytes assets/images/favicons/20.png | Bin 0 -> 2249 bytes assets/images/favicons/21.png | Bin 0 -> 1829 bytes assets/images/favicons/22.png | Bin 0 -> 1784 bytes assets/images/favicons/23.png | Bin 0 -> 2288 bytes assets/images/favicons/24.png | Bin 0 -> 1977 bytes assets/images/favicons/25.png | Bin 0 -> 2172 bytes assets/images/favicons/26.png | Bin 0 -> 2299 bytes assets/images/favicons/27.png | Bin 0 -> 1945 bytes assets/images/favicons/28.png | Bin 0 -> 2299 bytes assets/images/favicons/29.png | Bin 0 -> 2315 bytes assets/images/favicons/3.png | Bin 0 -> 1744 bytes assets/images/favicons/30.png | Bin 0 -> 2339 bytes assets/images/favicons/31.png | Bin 0 -> 1941 bytes assets/images/favicons/4.png | Bin 0 -> 1374 bytes assets/images/favicons/5.png | Bin 0 -> 1665 bytes assets/images/favicons/6.png | Bin 0 -> 1800 bytes assets/images/favicons/7.png | Bin 0 -> 1370 bytes assets/images/favicons/8.png | Bin 0 -> 1801 bytes assets/images/favicons/9.png | Bin 0 -> 1807 bytes assets/javascripts/dynamic_favicon.js | 140 ------------------ lib/redmine_qbo_calendar.rb | 1 + .../patches/application_helper_patch.rb | 39 +++++ 38 files changed, 40 insertions(+), 148 deletions(-) create mode 100644 assets/images/favicons/1.png create mode 100644 assets/images/favicons/10.png create mode 100644 assets/images/favicons/11.png create mode 100644 assets/images/favicons/12.png create mode 100644 assets/images/favicons/13.png create mode 100644 assets/images/favicons/14.png create mode 100644 assets/images/favicons/15.png create mode 100644 assets/images/favicons/16.png create mode 100644 assets/images/favicons/17.png create mode 100644 assets/images/favicons/18.png create mode 100644 assets/images/favicons/19.png create mode 100644 assets/images/favicons/2.png create mode 100644 assets/images/favicons/20.png create mode 100644 assets/images/favicons/21.png create mode 100644 assets/images/favicons/22.png create mode 100644 assets/images/favicons/23.png create mode 100644 assets/images/favicons/24.png create mode 100644 assets/images/favicons/25.png create mode 100644 assets/images/favicons/26.png create mode 100644 assets/images/favicons/27.png create mode 100644 assets/images/favicons/28.png create mode 100644 assets/images/favicons/29.png create mode 100644 assets/images/favicons/3.png create mode 100644 assets/images/favicons/30.png create mode 100644 assets/images/favicons/31.png create mode 100644 assets/images/favicons/4.png create mode 100644 assets/images/favicons/5.png create mode 100644 assets/images/favicons/6.png create mode 100644 assets/images/favicons/7.png create mode 100644 assets/images/favicons/8.png create mode 100644 assets/images/favicons/9.png delete mode 100644 assets/javascripts/dynamic_favicon.js create mode 100644 lib/redmine_qbo_calendar/patches/application_helper_patch.rb diff --git a/app/views/common/_calendar.html.erb b/app/views/common/_calendar.html.erb index 393a09a..704f865 100644 --- a/app/views/common/_calendar.html.erb +++ b/app/views/common/_calendar.html.erb @@ -1,5 +1,3 @@ -<%= javascript_include_tag('dynamic_favicon', plugin: :redmine_qbo_calendar) %> - <% # Check if toggles are active via query params only_appointments = params[:only_appointments] == '1' diff --git a/app/views/customer_appointments/edit.html.erb b/app/views/customer_appointments/edit.html.erb index 0084ae4..8db5cd9 100644 --- a/app/views/customer_appointments/edit.html.erb +++ b/app/views/customer_appointments/edit.html.erb @@ -1,5 +1,3 @@ -<%= javascript_include_tag('dynamic_favicon', plugin: :redmine_qbo_calendar) %> -

Edit Appointment

<%= render "form" %> \ No newline at end of file diff --git a/app/views/customer_appointments/new.html.erb b/app/views/customer_appointments/new.html.erb index b440001..852510f 100644 --- a/app/views/customer_appointments/new.html.erb +++ b/app/views/customer_appointments/new.html.erb @@ -1,5 +1,3 @@ -<%= javascript_include_tag('dynamic_favicon', plugin: :redmine_qbo_calendar) %> -

New Appointment

<%= render "form" %> \ No newline at end of file diff --git a/app/views/customer_appointments/show.html.erb b/app/views/customer_appointments/show.html.erb index 57950a9..6ad3250 100644 --- a/app/views/customer_appointments/show.html.erb +++ b/app/views/customer_appointments/show.html.erb @@ -1,5 +1,3 @@ -<%= javascript_include_tag('dynamic_favicon', plugin: :redmine_qbo_calendar) %> -
<%= link_to issues_calendar_path do %> <%= l(:button_calendar) %> diff --git a/assets/images/favicons/1.png b/assets/images/favicons/1.png new file mode 100644 index 0000000000000000000000000000000000000000..29f030fd0970d42f76dcfdfa89c207a28a9ffbc4 GIT binary patch literal 1209 zcmV;q1V;ObP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuABS}O-RCodHTRlh|K@@)XC-JB7 z?+S^Hq!C4gkZ=T28Nn!ac5)aI^paK(EmEfN2kYEfTnMCBu`!4?g7FFwLBzrklz@Ui zSNOw$ikY|UEIWI1m(As7c5dB)b!Oho?t9<&-puZ~`v4w!@fC`HWMm|Cad8p#`FtPn z8V?T-pKEJtzs=3f-4=RHJLeT!Z_tiX-W(l#l8zA~UJ@C0zfhToy4ZSiM!?L>%&YtR z`*#FH2RWL^!H~7TzYo{f*9^wW%1UT%Zf0b~?)-z^JEHp+Io1M!z}K;{u^&8JxCBg2 zPR4_`x3On?dr)(F3N>eE@Z{!(IsapOJJY9~PdhubDWtZmH&amo>H2y|hr{r*r3LOn zp~S?*#Cxkzeyf0hUk)E1$KK4(L(A3{G#njefw!KcVjmrbwj&0_f|wAS)mDZ8^gNl^ z^?G?3Dz2`qb4#|5SP&CpLyTr11_8L{G3=kOuj7_(p5u--!GzclBVwhX3<7Y&!!_?F z&r^`JMr?>t-`q8^K>+D>;D+b+qGRl!IL!n!;cjoYJhj{v@I0Q(?)B`>-y3OxFY|R86F-6tW_vd3Antxgu%f< z*xue&0lQ{{Gy*m@HlU}cM=9{gfbdQ5;NSq_@i;6jEa3Y?Wjs#}5lX=7>MF!yF(rXh z0)#FBT=P7yS5;L}{f^f{3E-h?ZEc06r6mXkg$5r_HCHChit_Suh(@C@IywqvWo2Ar zoDd2n!0-1%n7o}G7#M*5{(h*gu66=rUY$Y-=tNrB!$l;FNoKzYuvc(e?@b zHJH!%-QC@M!_vmQB_NGzMHP7wU~&wmnBbSxCXu_ECTtp3L}!iw%&&n{7k@Es!lq%h z60n8>OiFTVF=5lNB2FU$FtZ8;sZ6uksI5QH7XnBD6a)YpjqLL}N z;o+Lcu&16U#(yWNb8pQcvIxLIJ+mrip6G%$H*b(j0D}En=4c5JVk>jB1aNpJ3T5CA XHEDAgcs60~00000NkvXXu0mjfmvaw5 literal 0 HcmV?d00001 diff --git a/assets/images/favicons/10.png b/assets/images/favicons/10.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7cf3271ad8a99d43af524db9a94dcb26b4415e GIT binary patch literal 1898 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicons/12.png b/assets/images/favicons/12.png new file mode 100644 index 0000000000000000000000000000000000000000..e34acae768d47cac1346f110fac76b0649c28665 GIT binary patch literal 1832 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicons/14.png b/assets/images/favicons/14.png new file mode 100644 index 0000000000000000000000000000000000000000..2a08ce93359e2a71cf552077a979edf69c40caf4 GIT binary patch literal 1586 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicons/16.png b/assets/images/favicons/16.png new file mode 100644 index 0000000000000000000000000000000000000000..2e20f315f52ed2d9b70c090de70756a1de9f38fb GIT binary patch literal 1978 zcmV;r2SxaaP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuDBuPX;RCodHTWd&FOB7zd!X8*w zR&pyc?PY{?xfi)~3(TNf)Q{*%h(%E9pM;20^90ATN;w`N$t3 z_K;q3dq@^#_OLQEz4HxcHnaDc-PwDeUG8&o!8tRt_L^DiTYF~qnwhhIWPISu#5LxKUl|X@e+2Ja zq;Bgq?EytaMZbOd@?{ePv6%gm*iYxIyLa!>hYufg7)OpANwa6q*74jf*wEX@bpOYG zwNX(~ief*0)YbnpElpPzg}+)_ME0Ac zR`vFb7(rd*$5U5A0=1>4QeR9=$(}uXa*aks8W{|HO+rUUPG)sArQWzfiBF#Rfj8Fi zVi`9KwgUsO028noZPhsdcb*9@{k^7!Ms#-@Wka?MEWiY8z$gRJ9Dp&8ZvXSOYnaky znefOnOuz<=z$!p#4#0$mF&|EMUVs!SumPiQa_4N#0j#tb6JEHJ594BiQ+7ZSW_zpj zli{g=dMcjP_N>aObf|b{?fEd`vCc_$K(z5uCxldKdS|B}TgCGe3X-AHq2igT@nO_r z8ZBd1!Hl2Q)x|G0jT^^P7$JCOb==?!9d7A$?0_iDsx0)y?|YKldgUSTJ#lzO*N_7| zb1MePkf9zhNRIc6+MyocnOiYPhWzk7Ko~cAjba^yxvhWmM_91Io(E=-|PFIz0yt z9H7;!SL=9z3U}_@q4M%_x_R>^wY9ZTe}BJLWz3i{l$Di5xw*MCeE4vU?(;G=)G77#^-)1V0iTCHfBqb>nHMi!P+ndhy?_5cpsbmID-M7Gn>TN!=H_NIJ(l?F zREbWWJZVW*2t9uMnD*}7D~h($pdHZA&_K(VFAo}gdwVrIoTmdeOJb(VY$ZBbFaB5Bz6di5fr)H0`H0k^i!4Mn;!n5BE@Mz1vwWuW#j6qPcW5*5}Hf)%5 z#d`Ms{rgJc2@@s|f~c!kuWIqY=+UDIk>#>w%V@)f4a$0Un2sC}85v0l?9>&r^Tv%E z36WVa)T!8FM|=7C`8*Po+kX4@Egu3H2DP=dgxEelK3*2Fm3QQT6)RToI}j5SV@sKt zu<<imHSprv)2C1A@ZrOvXghV}0NYvu zROszBf2|0U>&1%~3G)Qj2uVrWsg~9%7GQ`=oRB9RVAg#R^;J|<(40AQh`r`Q^XJc} z%F0T=$re!{qCqF*2?v-3F^B^&>&t}T2f>h$Lb?Z-IRKHMie}B4<;M_rA8U$wi`(b1ul4aD@s5STf0rqWKc_yDnhkrERVjVw!LPdH%4j2S$(H(Gr8@?|57 zmsOEtN=k}SHW1Sj4!~0&BO}Al)?2r3QB_ryj{lOq#&ho6IUNrLIME4t!T~TG5uJ*# zO@HXnA-aA0HX-s`w{9JM`t(UBiiMGry#O@gC=}Ldcd394&IJn=P>v^#}?b7MT;zf zz_R$ni4&ySC$!W66LQ@Fszs8DXJ#Ol)}^JTd?{=eA3z5C4>&h)I{OR#uFnCOtb!%1 zHn(rz&VP93x3D+RA3b_RQ>RYl>w<|BCkCrRtM9r4w3c1UU@d?lVRcy8RqOf?uxr3z z%MUp~x&!=Z#cTm0$%SlI!loS~$vpty*APO@a3u*F#|oUX18Tv*M@ivI5;l$%I5h|0 z%PKIMnwseO^XJHh6#)~lfdp2b=N$IOmY(fPmMp=d`WGBIPo6xP%yw!-olr>u9xF(^ zzQd@5EwGA(?GYj)Qg-lI!}3c}PESwg-vQzf1e=nfM40d}=F#oNooDv{%TAX6ka74q z02h5h*~zy|tqGz1)iM;&JSuYNfi0yu_D{H7lGAH7DJRME_D3jhEB M07*qoM6N<$f&yTfs{jB1 literal 0 HcmV?d00001 diff --git a/assets/images/favicons/17.png b/assets/images/favicons/17.png new file mode 100644 index 0000000000000000000000000000000000000000..45eda6b461d253ba0d9458d4726f424d556256ff GIT binary patch literal 1581 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicons/19.png b/assets/images/favicons/19.png new file mode 100644 index 0000000000000000000000000000000000000000..40a92b5e737a2d0b662adcbf3561fab87211d319 GIT binary patch literal 2012 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 XabGw=$l)O*00000NkvXXu0mjfdq^qn literal 0 HcmV?d00001 diff --git a/assets/images/favicons/21.png b/assets/images/favicons/21.png new file mode 100644 index 0000000000000000000000000000000000000000..16be4dabd1475ed01ec12cd1fd03491b124fbd7c GIT binary patch literal 1829 zcmV+=2io|FP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuCk4Z#9RCodHTU$sLX&8PzV%kMo zBB2+`f_b2X+D$gRkY6P`U3p_B8690ANGS^2?lwq8P*T?exNLbNUZ{6U*iF=?l96a+ zWNIuJWg2Lqd1$|9_-A%z{%>?<{+a(^zVQDu-}@cj_j$g=;=g$DV#w_5 zY+*n^z;7ty`}gmEMny%nH8(den=MmMKCA5p>oLkp;{@L-#xWv(VLAl=5_NW5t+uP# z0;;O2eqCK%En*-X?3ciP3bJ0kdPQHpd{JPGh=`!1q$GvT>VN^eE6nx;`#lT_3i|un zwQK+IeBlys=gytR;N|5@KfQcOksm)&o{~Z~qr%`j zFaQfM0h`)a1p%memhf;!PY;DJEU44^Z5UX93D|&94n!gVeICtz|D#73(&cG3$34RY zY`_StA}EOf40!1Co2lkSkm42CfYCX)3u=h~7II*~+w9`R=n!$r2}rGYPTHyzIgPp4I$6C)n$g2)L7RzK>*M7(SIr%x_wp3Wtan+l!{o=(e*6QeYzk#4jy zXzA1D=7gyJojZjqoDg+dd92WjHmtI1nt&jTs%+|upC`p?yYepJNgO_7Yl{G%sR}PS zveg2-M7+4!x?=29m+#K2?J zQ(~9^oCn6n#!^T~h~#5(aUMrh3g(2dlBKFZfB39*F$jPjVk@S5$_t5>F%w!*R&Fg7+O3|!9l zgcP{gD=Ji5TWi_!SW&o}0ZRw~c&%m+@a#OE91e$@uG*8`Z34ua=k<9!@~|$z;O491 z76Gqczt(K_VPRpy!Y4B`(^s(zewii!HGY=uA@ce>rmrn6Ep+hUL7xT>=S&fRb2;IMbU)a=e$G7EWTi>TPxHz)= zSW2{Q_Z8qVg?GNe(!}0_lD->qS(iG$tU3&*($mw0?*MUNfxSI{5)63g^Jw;B%`^Xd z*{5^4avUxMAkz6|)g^htO>ocsZjeg=z;5*As2>o5M;%7{b-x_-0~}i}+RDIxBT{uU Tk2Nob00000NkvXXu0mjfwjor> literal 0 HcmV?d00001 diff --git a/assets/images/favicons/22.png b/assets/images/favicons/22.png new file mode 100644 index 0000000000000000000000000000000000000000..a23f37870e98bce03d3793d79d3c1fad279840d7 GIT binary patch literal 1784 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 LNkvXXu0mjf9vGi9 literal 0 HcmV?d00001 diff --git a/assets/images/favicons/25.png b/assets/images/favicons/25.png new file mode 100644 index 0000000000000000000000000000000000000000..d16ab07ca41c8fc6f5d84c43aaf916eafd42da9a GIT binary patch literal 2172 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicons/27.png b/assets/images/favicons/27.png new file mode 100644 index 0000000000000000000000000000000000000000..74bfe294145c147ef572bd86b51ac4b9b7e8d84b GIT binary patch literal 1945 zcmV;K2WI$*P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuD14%?dRCodHTU$s~OBnu5H<$%w zB@yo6DNZT0}p&#JR;^SXdZ% z_wHSOTwL5{6<7yEmzY8lfr}_$w)`twq_FF43%e_h{0K7dG%}n!y-G zg`w=g04%@+Y-(900#NhJFemHE6-xT_NwpoaVPF9!U;{=GNSFZhc{KZ9Z`{C;F51M# zJ;MZSzzD1yRG0t^c3ryPPWgo};<0XtNI-)6sN+VuYv$XxHnmP?GxDg=`OxW{+=MWO=QQCP zrvy&=jE)W~s&@Q%>xx2fol_b=^xTJEeq9p~k5QFPeevs0@!PN11^N@mpz$?Kz@Vv$ z0V>FF3m72c2aVg|7BFb4Vt@+r)3*R=B6MlpI@+~s*8tT;|F}JP@Sx;KB0!2U46t2c zdiClRH8(e7hnS{JnL-mMPBhG=|IIxUaP#I(I)3~(J$m$rIy*Zh1W9aPE_9D z};J0oj7rVzJLF&jq{>hym+yzPJ_?y!9Ma@w29XpoR zuU~J|gAkPf7(IUcSRw!eqi%3iGt|vda&vQCjs84u<1T>nz|_=K3IqZ?51Ki1rWEE8 zPV)eCBU8D4{W?`uRY}Q`lar~etc=*ftfV&y7`K4Ed-oE4nCxIw$K*#OLv;S^8O|o{ zg1Lc-eE9Ie>P~8!l9Cbv30}mQ0PYN|!+CE7z#~tUgoFf|K7G2X?lpYq&>?DXZh8u7y(~L+?2r|GgwC8fLtS0+ODA~5nsy^6H@*|_{P}ZQvt|u-gw72_$9Pns=|(D_ z*je8B^XF~m#l^)oom+*k1YkbDdi82*YiqNW2MZ$%S|$SUAVHJ`3l>m@!^;_>U8MJ} z2SL?AeSJOU=jT)CJs~NYy`n-#j~+Ez9%H>xQBfh~gTUIgYi&9&3SS5Scoa<6>;ayg z$5SvEG%DxayLYWete9xz$dR;g;X+a6`Q9@DyykV_@yNrv0Bdzq!Nf-ukeHa5sH#1M zJrU5*(BRnYQBW*=7A;!js(?BI+z{E9bJql*#@DeuL|vaBJ$f{qK7E?z&70Ske{Fng zYb$|VQP7qAZvM#M6#-bzV)cfCssiw5&z|)(QtN7e+O%neCyC$Uihz?RPtpy%Or;U@ z`8jjuSZf7Mw5956@p6y7+NKKfjD{E!fCW%_dAVa*Hf-477{?>_@83_WR;}Ve+x6wk zmo{Cr2r!-qojZ4qu&Loi)TynSmyQ6xroO5#V*)N;zO3fqYZ%LH-At0biSDZ(o|zE= z82O#n_&h_eS8TWIT1aopZZAHK2zdJRsTW`2v`!l+Fu=Z_DtNMt88b#z`w})91n173 zOHEBpzBqQuWa`wZQTHMGHfjN4!dST9UTI literal 0 HcmV?d00001 diff --git a/assets/images/favicons/28.png b/assets/images/favicons/28.png new file mode 100644 index 0000000000000000000000000000000000000000..afcb4b88915b14cc6b59d950a36524243b836119 GIT binary patch literal 2299 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuEWl2OqRCodHTWM$&Nf54F5~89} z;}yY#c#8__u0hGKM96w89(Y6p-Ybd+-mZwSf}(=r5u>m{O#}}JiejRocoRiMLGg-b zFya+&qlvoxHLquT`t`ib%zL?>DHvwDx~99o>h9|5>KUS6oI>2OYkb=9_V^4N5I;( zYkPnH{ym+6NM=_&yG+Wuefu_j`t-?!v3~vf)TvV^6EDyS2lbY-x*xLZWLQ|(&IJn= zT-3EitAN$3S8oe1E1Q;Z>lQ`7d`Z!-UQy)d&!+eP?$N`P7KwkZUl)&+a<^M=X;c)I zG;2mBF)>uwr3;luL}V^rym-3Ws8E%`z~{vj7f(yc&803^u28EdPrSgZ@6^OJIt*g#2Xa>d^75s_|end>Z4y>IEx) zkCGCeRnW94zoQX?XZ21X_@a(L)$3XTVX&&q^~F_{6zF>8DNvO-YD`^q3aBw%QB4i0 z8v)g%_!?7f-3X{LT~SR9`Q=A|$q~w(IFS}DT2xJaQ8m@BS+mAekx2oj9ES-O6{Z(2 zUeM#mj}alJxVSiK(V~UJQq1CP+e*)#J)@^jpHgIGBrlUip3OpjruG)$;oHc6}UA}zTc76Hz`80d>Z2Ixz zhxQ#z8y32zf`S5VzRD~wFDG^gLwok@QL`MST`2&XN3T02fJ38ol%1VT=gyteW%=Z- zTD6Lvu;{N_a;$)F-@XwVtE1t=htsA_n`py^4V03Sq7$JlTefINK^}|Rs#LFDJw7Uq zA3siq41`iK6Z{9Seog^HOfD0Ec zc$MF{abr_Mg@CLO!NXl`FhIS3|6Ug1&jSYz^y0zzsr2w6PQcueV+G(mFg7-pA|fJ; z8asFHY)Xp^D?b3!NTx=O8WB6clUe*3##SZW%FxskmQ!Wzq#aLz<;#~7E?DiiZ{Kp~ zM^=Vhsa4OwH;@V7!BeLJrqA5Da}80fAp7_4H`3w(9pIK6D?n7lj>9QBI+|aCr`~nO zGCVw-I&|ouiqiP;<7vr~B_{sXty}rjfIlM!Yu7G*8BFN`wg;w#-aK8l7Z2cb*{N@zK7G9MoG=2efJcuWad)=Fb8a9vX25^} zJ{t^I8G8yl^zPj|%E-td-2I_|PJ#RP@AJ6~pI#+wjFv51rm~InYj&`LeE@cTb_hmz z-@bi(&j4G4uT$Jmz(&BGJ9oG-(t(GS-?(w3&+RdGj5_cmMvUO|9MhwBZ{t+kz={#G zV#Nw0?erla3IOO>F?cv-5aLPEJ;{j5L-%or4AM68jD~KSPHOrQN%C6Wnc; z4jno~MMXs_+g93d1ps_nS{mu*JeEB4{E#6-d^QIAf0bIdZcURXPd2e(DB)fsI3g1q zrZZ>G$Sm8>ektJY-MbvT=kqvIrD$YkW+wIP*U!Y)C9rC!)U8`Lf&x{7_16VL-0ldy zYfx*nNTbImvKXQce1irJXvdBn)T>u7i?_{ec$6yXzzZ3j+YCp^4Y?Wta8Tf)78e(L z)d}!$UhINL0lFT==+Y5<3oNxN>B>-LbZJ)#fQxz-A5&=vv4HN~yYsyQmMYz)z6N=f z?%lgbvR5ebb8>RDJ4bbYA>=E%JDvg08*)4a z4jw${rXHW~V0lBdr+xeOKIL?o*j!l!UUc#*&yfOP`K|W&YQav^aFsE&;@E+TUBdYQ z?2&F&uv>;B1w450z;3xd<*WiIZQHh`W5z~(Y(}h39s&Gxp`sJq+N=Qyn{kpN zE8rx+;aECYNy5gl0;iz>w*2e_11Gpxeu9mFNgTZktiWiTN3j#wqP~6mwqm^B5ukvB zfvs&Y5WvHQ_k6*U$-aZyCUAv_2XXiOS(S=3Tutn<;CcDuZi=$2@(zQCIgep4dY;vv z&wiczQ*MWs0+8wXvuc_w7zEGS{|2=R0N9HD9IXWk!BPin@AJ>mT7aXjiIu8>{{X5d Va?a}_SkV9g002ovPDHLkV1k)LH4Fd% literal 0 HcmV?d00001 diff --git a/assets/images/favicons/29.png b/assets/images/favicons/29.png new file mode 100644 index 0000000000000000000000000000000000000000..748e307cd81ae123561ae088a4c9b3726b0e4461 GIT binary patch literal 2315 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicons/5.png b/assets/images/favicons/5.png new file mode 100644 index 0000000000000000000000000000000000000000..4960708c8c9164752f3c7f22f72bfd59a689217c GIT binary patch literal 1665 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 literal 0 HcmV?d00001 diff --git a/assets/images/favicons/8.png b/assets/images/favicons/8.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c9c8609d5571b818712bf831b11960a0090f70 GIT binary patch literal 1801 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 literal 0 HcmV?d00001 diff --git a/assets/javascripts/dynamic_favicon.js b/assets/javascripts/dynamic_favicon.js deleted file mode 100644 index ffb57b1..0000000 --- a/assets/javascripts/dynamic_favicon.js +++ /dev/null @@ -1,140 +0,0 @@ -(function() { - 'use strict'; - - console.log('[Redmine QBO Calendar] dynamic_favicon.js loaded (Simplified Canvas PNG)'); - - const FAVICON_ID = 'redmine-qbo-calendar-favicon'; - - function generatePngFaviconUrl(day, callback) { - const svg = ` - - - - - - - - - - - - - - OSOR - - - - ${day} - - - - `; - - const cleanSvg = svg.replace(/\n/g, '').replace(/\s+/g, ' ').trim(); - const svgDataUrl = 'data:image/svg+xml;base64,' + btoa(unescape(encodeURIComponent(cleanSvg))); - - const canvas = document.createElement('canvas'); - canvas.width = 64; - canvas.height = 64; - const ctx = canvas.getContext('2d'); - - const img = new Image(); - - img.onload = function() { - ctx.drawImage(img, 0, 0, 64, 64); - const pngDataUrl = canvas.toDataURL('image/png'); - callback(pngDataUrl); - }; - - img.src = svgDataUrl; - } - - function setFavicon() { - const day = new Date().getDate(); - - generatePngFaviconUrl(day, function(newFaviconUrl) { - const existingIcons = document.querySelectorAll('link[rel*="icon"]'); - - if (existingIcons.length > 0) { - existingIcons.forEach(function(icon) { - icon.type = 'image/png'; - icon.rel = 'icon'; - icon.href = newFaviconUrl; - }); - } else { - const favicon = document.createElement('link'); - favicon.id = FAVICON_ID; - favicon.rel = 'icon'; - favicon.type = 'image/png'; - favicon.href = newFaviconUrl; - document.head.appendChild(favicon); - } - - console.log( - '[OSOR Calendar] favicon updated (Simplified PNG)', - { day: day } - ); - }); - } - - function initialize() { - console.log('[OSOR Calendar] initializing favicon'); - setTimeout(setFavicon, 150); - } - - if (document.readyState === 'loading') { - document.addEventListener( - 'DOMContentLoaded', - initialize - ); - } else { - initialize(); - } - -})(); \ No newline at end of file diff --git a/lib/redmine_qbo_calendar.rb b/lib/redmine_qbo_calendar.rb index be3f6ab..3001bb3 100644 --- a/lib/redmine_qbo_calendar.rb +++ b/lib/redmine_qbo_calendar.rb @@ -14,6 +14,7 @@ module RedmineQboCalendar Customer.prepend(RedmineQboCalendar::Patches::CustomerPatch) User.prepend(RedmineQboCalendar::Patches::UserPatch) CalendarsController.prepend(RedmineQboCalendar::Patches::CalendarsControllerPatch) + ApplicationHelper.prepend(RedmineQboCalendar::Patches::ApplicationHelperPatch) # Hooks RedmineQboCalendar::Hooks::ViewHookListener diff --git a/lib/redmine_qbo_calendar/patches/application_helper_patch.rb b/lib/redmine_qbo_calendar/patches/application_helper_patch.rb new file mode 100644 index 0000000..71282f8 --- /dev/null +++ b/lib/redmine_qbo_calendar/patches/application_helper_patch.rb @@ -0,0 +1,39 @@ +#The MIT License (MIT) +# +#Copyright (c) 2026 rick barrette +# +#Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +# +#The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +# +#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +module RedmineQboCalendar + module Patches + module ApplicationHelperPatch + + def favicon + if calendar_or_appointments_view? + tag.link(rel: 'icon', type: 'image/png', href: favicon_path) + else + # Force an explicit type tag so the browser replaces the PNG on non-calendar pages + tag.link(rel: 'icon', type: 'image/x-icon', href: favicon_path) + end + end + + def favicon_path + if calendar_or_appointments_view? + image_path("plugin_assets/redmine_qbo_calendar/favicons/#{Date.current.day}.png") + else + super + end + end + + private + + def calendar_or_appointments_view? + controller_name == 'calendars' || controller_name == 'customer_appointments' + end + end + end +end \ No newline at end of file