From 12d3552fe61d7d26817f6644d8cd90e72307a0e6 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Wed, 24 Apr 2013 19:54:56 +0200 Subject: [PATCH 01/26] Corrige soucis #41 : ajout d'images png en fallback des images SVG + petite modif pour annuler l'attribut height sur les images --- public/theme/freshrss.css | 6 ++++++ public/theme/global.css | 22 ++++++++++++++++++++++ public/theme/icons/add.png | Bin 0 -> 246 bytes public/theme/icons/all.png | Bin 0 -> 223 bytes public/theme/icons/category.png | Bin 0 -> 294 bytes public/theme/icons/close.png | Bin 0 -> 405 bytes public/theme/icons/configure.png | Bin 0 -> 526 bytes public/theme/icons/down.png | Bin 0 -> 460 bytes public/theme/icons/help.png | Bin 0 -> 687 bytes public/theme/icons/link.png | Bin 0 -> 719 bytes public/theme/icons/login.png | Bin 0 -> 333 bytes public/theme/icons/logout.png | Bin 0 -> 339 bytes public/theme/icons/non-starred.png | Bin 0 -> 600 bytes public/theme/icons/note.png | Bin 0 -> 427 bytes public/theme/icons/note_empty.png | Bin 0 -> 517 bytes public/theme/icons/read.png | Bin 0 -> 656 bytes public/theme/icons/refresh.png | Bin 0 -> 577 bytes public/theme/icons/rss.png | Bin 0 -> 483 bytes public/theme/icons/search.png | Bin 0 -> 571 bytes public/theme/icons/share.png | Bin 0 -> 541 bytes public/theme/icons/starred.png | Bin 0 -> 528 bytes public/theme/icons/unread.png | Bin 0 -> 434 bytes public/theme/icons/up.png | Bin 0 -> 411 bytes 23 files changed, 28 insertions(+) create mode 100644 public/theme/icons/add.png create mode 100644 public/theme/icons/all.png create mode 100644 public/theme/icons/category.png create mode 100644 public/theme/icons/close.png create mode 100644 public/theme/icons/configure.png create mode 100644 public/theme/icons/down.png create mode 100644 public/theme/icons/help.png create mode 100644 public/theme/icons/link.png create mode 100644 public/theme/icons/login.png create mode 100644 public/theme/icons/logout.png create mode 100644 public/theme/icons/non-starred.png create mode 100644 public/theme/icons/note.png create mode 100644 public/theme/icons/note_empty.png create mode 100644 public/theme/icons/read.png create mode 100644 public/theme/icons/refresh.png create mode 100644 public/theme/icons/rss.png create mode 100644 public/theme/icons/search.png create mode 100644 public/theme/icons/share.png create mode 100644 public/theme/icons/starred.png create mode 100644 public/theme/icons/unread.png create mode 100644 public/theme/icons/up.png diff --git a/public/theme/freshrss.css b/public/theme/freshrss.css index ed6646269..d39ca7fc8 100644 --- a/public/theme/freshrss.css +++ b/public/theme/freshrss.css @@ -127,6 +127,7 @@ } .categories .feeds .item .dropdown-target:target ~ .dropdown-toggle i, .categories .feeds .item:hover .dropdown-toggle i { + background-image: url("icons/configure.png"); background-image: url("icons/configure.svg"); } .categories .notRead { @@ -199,6 +200,7 @@ display: inline-block; width: 30px; height: 40px; + background: url("icons/read.png") center center no-repeat; background: url("icons/read.svg") center center no-repeat; vertical-align: middle; } @@ -206,12 +208,14 @@ text-decoration: none; } .flux.not_read .flux_header .item.manage .read { + background: url("icons/unread.png") center center no-repeat; background: url("icons/unread.svg") center center no-repeat; } .flux_header .item.manage .bookmark { display: inline-block; width: 30px; height: 40px; + background: url("icons/non-starred.png") center center no-repeat; background: url("icons/non-starred.svg") center center no-repeat; vertical-align: middle; } @@ -219,6 +223,7 @@ text-decoration: none; } .flux.favorite .flux_header .item.manage .bookmark { + background: url("icons/starred.png") center center no-repeat; background: url("icons/starred.svg") center center no-repeat; } .flux_header .item.website { @@ -260,6 +265,7 @@ display: inline-block; width: 35px; height: 40px; + background: url("icons/link.png") center center no-repeat; background: url("icons/link.svg") center center no-repeat; vertical-align: middle; } diff --git a/public/theme/global.css b/public/theme/global.css index c08463b8b..7bae3f432 100644 --- a/public/theme/global.css +++ b/public/theme/global.css @@ -42,6 +42,7 @@ h1, h2, h3 { /* IMG */ img { + height: auto; max-width: 100%; vertical-align: middle; } @@ -432,65 +433,86 @@ input, select, textarea { background: center center no-repeat; } .icon.i_refresh { + background-image: url("icons/refresh.png"); background-image: url("icons/refresh.svg"); } .icon.i_bookmark { + background-image: url("icons/starred.png"); background-image: url("icons/starred.svg"); } .icon.i_not_bookmark { + background-image: url("icons/unstarred.png"); background-image: url("icons/unstarred.svg"); } .icon.i_read { + background-image: url("icons/read.png"); background-image: url("icons/read.svg"); } .icon.i_unread { + background-image: url("icons/unread.png"); background-image: url("icons/unread.svg"); } .icon.i_all { + background-image: url("icons/all.png"); background-image: url("icons/all.svg"); } .icon.i_close { + background-image: url("icons/close.png"); background-image: url("icons/close.svg"); } .icon.i_search { + background-image: url("icons/search.png"); background-image: url("icons/search.svg"); } .icon.i_configure { + background-image: url("icons/configure.png"); background-image: url("icons/configure.svg"); } .icon.i_login { + background-image: url("icons/login.png"); background-image: url("icons/login.svg"); } .icon.i_logout { + background-image: url("icons/logout.png"); background-image: url("icons/logout.svg"); } .icon.i_add { + background-image: url("icons/add.png"); background-image: url("icons/add.svg"); } .icon.i_link { + background-image: url("icons/link.png"); background-image: url("icons/link.svg"); } .icon.i_down { + background-image: url("icons/down.png"); background-image: url("icons/down.svg"); } .icon.i_up { + background-image: url("icons/up.png"); background-image: url("icons/up.svg"); } .icon.i_help { + background-image: url("icons/help.png"); background-image: url("icons/help.svg"); } .icon.i_note { + background-image: url("icons/note.png"); background-image: url("icons/note.svg"); } .icon.i_note_empty { + background-image: url("icons/note_empty.png"); background-image: url("icons/note_empty.svg"); } .icon.i_category { + background-image: url("icons/category.png"); background-image: url("icons/category.svg"); } .icon.i_rss { + background-image: url("icons/rss.png"); background-image: url("icons/rss.svg"); } .icon.i_share { + background-image: url("icons/share.png"); background-image: url("icons/share.svg"); } diff --git a/public/theme/icons/add.png b/public/theme/icons/add.png new file mode 100644 index 0000000000000000000000000000000000000000..90cdf4830915c7cab121bf45123eeefcef6cd5f9 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JRO;dB;uvDlo6N(@pSFO-AaKd- zXKWmwxc`ek5&vgjptqo#QRjqA%s*H0`u`twm2+bna*Q^eeevi-!UN`syAm7tKKz`U erMKV)1B0@OQ23(>>2H8$GI+ZBxvX2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JRBGty;uvDlo6N(@pSFO-AaKcS zDYgv?#YUGm{}*1I`RmNeo{(b3#|`X{G9-H17(;m&72?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JR9fNb;uvDlo6N(@pSFNy1IH)s z`)LUY0gl4^KmU6i9h$_GaA?s?#&(G^@duLxo{0bJcfbGiyZrrE2V)%gE*vdj6c(QR z==S&Z@)NRz?lf$FA8)VlASdSm-_E!OMo}+b1#5x!rHqG~7V(Klet3U>|KBH41?@7u c0R`*~QaaMQv-`Hi0Nudg>FVdQ&MBb@06w;53;+NC literal 0 HcmV?d00001 diff --git a/public/theme/icons/close.png b/public/theme/icons/close.png new file mode 100644 index 0000000000000000000000000000000000000000..452f1d1cfee842a78a710a1da19f3b89c444405b GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JRQlZ0#WBR9_w1yNUPl}R+VNr`@vgyC5k6#uiLP3_op{}H4LiW60>b5RJf_O`kDVfSM&S) zn^R|I2;~KR-_Ic8yf9OWd75ir%=FZsOaY-+8^8Z!<1lpVWomGLV6!x2dv5i`?|UoX zzi$kF@G_cx(z-KiCYtzbUX7g1EbTdc{;Th{kCQf97;R>=ICp9D5&@?hJlWs%Hoo4) zSMgh6FW;y2vR6uLU(Bgy@M|cYmVO{Ah(|HUUDo3HyRx&B7A=|KXl%Uu?@5mI16k$K q9Er0PSJ#-?9m;?Fe*dSG1J-#D0vM;)Wm*Eg%;4$j=d#Wzp$P!mWS_18 literal 0 HcmV?d00001 diff --git a/public/theme/icons/configure.png b/public/theme/icons/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6fb531c58a5ddacf30d2913a8ff3cc277ba327 GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw-fz`&T`>Eak-(YtigelKQ6fn)W% zm)yUd6U3$Xig|_ass@*)y&b*1no2i*i+p2Td-(^KqE^JxK=}jq9GYjJzROBHt|Yy4 zjv)u1&Y2qH`)|%{U(MIg_oM%1sAu+_3sUBPikY)xZcBZCk+W57!Q6s^ZBd(#*+xCS zRq3ZGud#GXM^5GY_ooA&M!G096ou^kcrTwR+iPX3cW5AU_8skj|EZ6*t8`zl_etor zW-V*fnPA_zFK89Jf>Qbc!+`C_Vwu=>cyIc#NyP2Gz{JHdkLxBKof~s!<1xlL40jJm zItvue@;lea_P}{l_#E5z$_0WJtLJ~zU&eSU@F|nT*~c3`H$64r?O{q+Thy_K;rbbu zH%!N`SxoETC}5p&;OBp1y^Mf9t>29{VP1F7eSFa0ShXVZo`Z|chb3F{{4RTPdo-5J z@{5Xkt@c4AYhUg|ZS_bS1~$tViSLe_JZ`-q_Rh)>7B1fJVNV(NG1P?Coy=4YZURON NgQu&X%Q~loCIGdh*U|t0 literal 0 HcmV?d00001 diff --git a/public/theme/icons/down.png b/public/theme/icons/down.png new file mode 100644 index 0000000000000000000000000000000000000000..5a647245f3f868627ca24b1b5d54c26d731474d1 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw-fz`!Wy>Eak-(R+5%Mn9%N0oU`P zpPAO${$oE8#&KJM+vyLh-GRJv#;LJZo`2Y?gf|#ZJar^O;{U;xFfYZz`D#pa9kVSw`#=Bu^J7!>$7!tFqvzHppV1ANG=+b0 z!Zy2ulZ)47^hl}|>Tl2VdlYw0!kESDK(PetW_|4?nN?gq4V$)>1+4z1y*BJ?`I@cF z3wV4knXJ{{Dtg5-e?OC*!PF}sY}W6;VsrkrcNRnNf%pv!8K3zk?FcVBcbBp9LC(c} zO!ri;9@40Yc)p*N;mF-5EIT4+Uts#WLbT89=9&DSsD~aw!U77OXLXDZLlf6$AQ5400=gqj$g2ZAgDl0mx1;UDjLr9PWVu6U#8$J_kOz5Pr zpdwqaEDOEivoK zJ)LNiGzyd?l>n@@4WMDIeN|trearKeU9hpXr7#Si8Dr)p6}TjZ>WX)Pn?M(E zYK(a~F*bGA@ehDg;2Q7|_$leWG3JQ@N&u3owR*KIsUJ83_LC%ONs^=m*awaz^*c`0 zscbiyRi5WH0G5^)cY$(}B=eiw>&?yW^=6VJ^FY~Q=Uho8bD3TL6UIFf&d$zC0F&d> zUBE%HSezXm8Yv79jTDN-;w*6Buyd}pwxPYfy*WuQfY-ovpwC*{G{ziSYrCD)!!%91 z-Ll^Szkvsm=Kg7;q+n@z@x4=Z&srPj@ytf=*PoLg9qpYbKwl2uuhpw_S@QYIr|%u@ zodIww*Wmf`%FLlTS!gQ5431-@H*wS|lVwpwX&rxNvJ^L@iv14YrZm==d+OqD9fB z7VUx%XPlYBc7fPzTo@KHLAZz@Xd_7wgy3e(q?n%hX6|X>^YI*V)m>e_bI$La`yH-Q z1O5EZN!AOK6H_fg5cB~l;0*8`C`)=#E|;Gy6z6y2`HD|4GCbBLX%T2Uq~W@mrE`Vs z%Y7jcE50P@ZCJeQd0x6!t95#w*WsMIAn6^@E~z*&Jl1spkm?_3l#~aK0NG?RIT!>% zac5^|Z6-UtE@{=w?(FACTAZAiYKZ`?t*t{qJMbP@GP7enJw02^&CQvx(MjiAiP&X}OQ}@KNV*orx1Doqz#mDkLue|#g;s!MGPznRmA;Lp z#~%Ts(K{1~Q<4&reo0yh<<7W?$AK*~`_SFpeIK}aU{z8roUkzng3VC=8381H^gQpZ zncXn6d-c0(XlPgoC)ou~gz{zt@O{6}Id=|tSYHgVv9a+xyly8FiCdvB&m%xnQ`1#5 zd;G6rfQ90G&CGl=O92;wAJuAgE&|NvGlkiFM$Wm@fU5_LjZB>PJZ}=X3;1Ss<>_3Z z5&>dn-43gW002ovPDHLkV1mt^ BIa>e# literal 0 HcmV?d00001 diff --git a/public/theme/icons/login.png b/public/theme/icons/login.png new file mode 100644 index 0000000000000000000000000000000000000000..cebe0cf7df8c07228d25706625294c09f934fe05 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JR65_&#WBR9H<^c*KWzcah6UVH zriX2+`}4!FZQ?}3?#9N0ELt_s{{R1f`Nz+n(@V;>|38+^5c1i^BvIJS?O3I}eO*dI zLc)xGor5iT3|G?F+}zyGzcgNMcoi?FA7KUt!Fey_n&Q;%I?F^ncK8ZVm6}+ zV;65ii)(UP)i*viHnwu5uW#qr6|Z97#ockWXHnUM!wC`+2Rt(KmfT=vIM%EoC(^iY Q8_=l?p00i_>zopr0P5X!v;Y7A literal 0 HcmV?d00001 diff --git a/public/theme/icons/logout.png b/public/theme/icons/logout.png new file mode 100644 index 0000000000000000000000000000000000000000..49255fccdfecbfc3bf0a2b717cd8bf6049306a5c GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JRJzpD#WBR9H<^c*Kh1&d>C&ld zrynBqbymG;+=V`Tzfale)Tps&ntY-9Pc_W`hNcE1p$m98&A)>G^C|_vgfc z0|yM`BbzwyGOReu0~DNhIo&UHj$N^qva<4G^-VHy%n9e_nI)g%o53J-nLlRaotVHAd+6Pv_EaY%M?6YW%xXb?p3XA-nO5ky)Xa+8}N=%7%v zP!JqlZthQls9PsjQHOwwLP2qGa}X4Dlww4~^?O~Sq@}kiJ==HA_ddMm`_8f1+BDmV ziL8R(Xzv7`jE*P6IQYKVy<8SR(j`f2lGdDa3;*o^xGbp-U}g~z{}pgx|75OGsq85h zi)SVMh`Zr4fJWW_={MT*`F#FiwOai;cYa3e0FAoeGqW?mF5ru#H_o|>W9$VW7!HS> ze!pLAdacjEy(sA{O^hs_HnZzt9Ngc`X50;50!IL5r)xV(rP4fb16axdIOonuy4Cbr zSGRZ*0LtZZ8(4PE)nN1sNiSMW)AW#;%{0B%%`CCsXx|1dnAzc^7p?vQ0QBxAAAvc* z%K}KclBVg2Fb+Qa&TX87y}+j}I(T0w6!wiLHqOB*pg*#E4Dcm=1MWmg=QZ%uId>d* zl?9kGv&T)Z^+3{5Gg}091CN?sYXx{KX=+@st_4ZYC0zsF4F-dQVH~VPNvG?an=~^6 m7A3tH*VuNqF>{&zHGTmtL8YPO;mY0s00002?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JRQlJ`#WBR9_w1y-UPl51TKDgq z&CwXM?S_*;yu%T{+;5_n)+S{uCUQpI&PYsOyn2)UI*w~%cFu8!j>U;|yNWb3Dke`B z)tNH;M#U-S`!f@to%rR}zW)TX$FAFnfg;fkI!eX+8CU&ch>=LvYk&UNeEpYl*Oc?A zi#kji-g}0Q?5Vp8i&T|nA2^<2Gh^njbM8D% z3XFN0uj4HjlvjP>Tf=zs(V2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw-fz`z*p>Eak-(R+5%d2N?Kk>mEy z_o+`Y$y%nfX32ypNq?Bj#LOnO&h7nZ^X(slSW4r^s(>wJ9ug+vb7g~l>|a6y==-unsTE<|( z9+lm&|Ldzc(q;$TSnUKR9yIYazA9#*qNMIH+c3>{%~pShW1siDOWINz?f=>!;+6m9 zFI+p!9oQDcNgS~J9(y}cs^atfU-E4F433I#vKn5mIpTi!y1YZ^^;d?RT!~?!;o2`J zMr5})1}|92RlatWaiQj}8S|qrcpdgmKC|Qdw|`aBu{e~Wg$dH?qPGSlS(M~{Bj(9>J>%HqR^$0wTEj!8^k zBz*rnyXzAHh3Tgy8TQ99H@uyDmSqM9*Ta}eDtr%wmqkx_x#die6)-j!JYD@<);T3K F0RWr*)Pev2 literal 0 HcmV?d00001 diff --git a/public/theme/icons/read.png b/public/theme/icons/read.png new file mode 100644 index 0000000000000000000000000000000000000000..a402689c735e1d256f4f0852d948bc229148118a GIT binary patch literal 656 zcmV;B0&o3^P)k7R5*>5QbB7IK^T2A-)5KAOKUI%1utz5HYuV#Rre6*5+O%xt=E!n(y-5#}ATfft5tR+ejF)VPaYgfP^LX#g`@R`=_ud^u z;lb9!QQ!AX&be&0TCZQceEvO3$D_#nl9gySo3{bPrIZ(9u~;_0WF`J9z%CT0bX~ut zlrof3H6p4hr3@kxMSCqdsAu5_sVg(wG|gGY*c1S0n)c3dOQ!%(wAW_Z?RL8BITJ#h zEG*7T0H9QQ8hg9@TuPZ?j9muM)->&vfKuw5=XqjdeRE{cys^GH;(4BsQjT`1u|Hlx2;mV? zBM5@*%JS+&$geD~P6R=aC8CB9!t3{F{fC9cc?ICqE)+i#(VUepoB;q4O#(P_+)~|f zODI@&&lCBP+#RQG7{&n+C5R|t7{-CS}wW@zXtrv7$S0n qVengnf@R+yHh=>F5!Hq@hMr&XuB1jpb#2T500001r;P)jlfi1#P!xv0lgR{hG0DwM>&#GaE#k_8g56jUbX7`G7Zycj_I(HO zDFoeCM0C|cp|g>y;6oIpq@~!@&O%6>xyOYW$i%52f@gCsm;e9x&$(Q=eRqX_DerF$ zuU@{E(*e#4;wZUqLc3u?``v_g--PyE93`tbuL02O^`4o~>e%9s5AE4*t0;;$s=8P~ zo&nmbx)8_ln&){pMx)W=-x6HBaLLQ_e7iJ%R@K#Jvzhq5-w}~Vz^t%mxLfff}OlUhMwEgP) zPXMwkTNjZ&a30u+qvYX?J=dO1+BRy%_ka(;^|DXYuN`=<2!dca&+~0yUR9qDheOI# z2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw-fz`$tg>Eak-(Yy4rq4yj|0k#Ln z6T}U2FX-(*a7g%0Y;I1FYtYRZN?R2=Qg?-P7I8EsEO(t%@-m6#;G^GW4m0FMd}8&)U559HUuoT6+`V~`?2{RX-g>M5X!fi* z5dPSCWN|8Y6OXZMxaq;NyadyDm}ZRCS@95Tw=V07Z7vV+e<+hrd%`h4J1uT^-xv}FCd zPcD~PlDL36_0K$xJ}G}Cv`#ko#_{+)t{IOM7RDaptvTqV8Fy5z@9%9N?)GNkEr!us zWP^7c4mP5q~#f2m&K)p TPgoTW3~L5YS3j3^P6u4^P)Llede`!YM7OLDQyzFHl z9*nHDOF#)25s`hMrm8EA^ZJPk(9=0YVe-gYy9+!A9s)U4omAClz>g?Q%GUx0;=u@b z1q`d|rm9Y-X&R{NH1H890vr9kLBVOEEqhp1H_w`xTzDw|(rypTEuHR;%^6qr_VK?vjQ7gw#~E30>QGR|uJjya3#*kM{JBFL?j}002ov JPDHLkV1iD;>uvx5 literal 0 HcmV?d00001 diff --git a/public/theme/icons/share.png b/public/theme/icons/share.png new file mode 100644 index 0000000000000000000000000000000000000000..74c4c5dda24fd8054748a6586fc6fdfebf61a7f8 GIT binary patch literal 541 zcmV+&0^2V-#8U7Bl532WjfQ}Tm4$_f+E^qpNhNBh z6464mG7{?)N#KrvTH9LLiLix`B1(`Qn>#r4&fHYHZ)V=Sot@$A+zjH_>B-q(r_)&j zunC|?vZ9o#nz6D0c*$4(T|}lW%jz0&3B1aGu)Ye?^9x2Qm0A*!u@HAJl3-_hcOa2S ztZ1!sA~GHpL$X5Gbxi=PzC;nZ0AK>x12F2vzG|(H48!;UumP`$wr$r<5y=9$2@p>O z&MyECNZuAp``;c`3#u>yY=x-nl3Z`M+qGt^p`)G&00w}s5Zn}zk#sse^j|Un&~@F6 zh}=i`-$@<Kc53Iwbn(FlOFa)@>oPZ5on@Ps>-NQetdYM z<2V_TB>)o<3YQ}ZeDek=D2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw-fz`&T~>Eak-(K~grt@oiokz@78 z_fO)p+$yqFge8zym)EoHg8B&`M<*AjMGF@#UASQ7#+BtVQc*6kcbMDlT%s?AypWy6 z66o(N^>6L%)6C*}&+X0^zq4#t-dG_beQBl7h3B77mcILR_Sna$s}1+x>oeOaq&%+3 z;lJ5?)-{1M;>Df+=?^T`2IR*C&ja8OU& z7`A$Cy_AU8&o)D~g{!vL3*47T7HSRJ$5`t-XWp!@Er%b5C!APR-{YbroZT7vmMtck zr`4(1zJt+CYiieJ=>kcMKI6~ctjue}vM*&ZeDQna7#iN7BA@(PZRTsy9c7L#O{;z> zDY;+GG7Z;w8qM%BWSIyDOIgU*1$XnuJX% QV8k$Zy85}Sb4q9e05IRyb^rhX literal 0 HcmV?d00001 diff --git a/public/theme/icons/unread.png b/public/theme/icons/unread.png new file mode 100644 index 0000000000000000000000000000000000000000..ab6e3fb398414c5025a5c7b4c1aea7822529d228 GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw-fz`)4j>Eak-(R+0AUN2@xk=FgQ zKQh+LnozV{v`Of?#0K;FvN9nZm5rOYe*b1DbL4Qkb#uDM)af3H^}1);&c0$xV&V5G zemY3)hFRkBn6aUbAxcwhEGN$ER#+VeuGxGM~Gf@~J|%K|P*?dZH*5UBHQ z_hI7)q87T>PB)k@VBN!CRo*}Exh-=_dZEPMu!Eub=$B zF)=h{>=K&T)?osqSAF{Xg)7?C^TWpX|D+e(m(7~G(d#G2XXoZhw|{@l>zIVsdCa?M S>*Ws&ItEWyKbLh*2~7a75~m9Q literal 0 HcmV?d00001 diff --git a/public/theme/icons/up.png b/public/theme/icons/up.png new file mode 100644 index 0000000000000000000000000000000000000000..8bfc2fb13262097111f60e857c904de805887299 GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4#g<1Xt!J<>zE3D|ja7=P86_q~@mfEzw*JRQlG_#WBR9_wD4peol@8Zs+gj zZds!CkX1vs$NoHnzr#^!0qt*-R+N`}3whmZkZ^J=Ul_A!z00--n|F#x`GiPutIte3 zcgAyHQrGR>(&sdbuYJ8Q&LSWC;o@H}ff^aFPm^js6#h_dT<_$6Nk%}yvpBx>-gcIQ z$Ey<G;>+a;H<;S1%1u*M+o}O~) z#fcywNgE2Sz?W>TM*NZgn6`iXM w@B2P~^RA*j=PkcChCk5yQNbAS=Rec?+*!%bx=W`X1$vyp)78&qol`;+0PW(U-~a#s literal 0 HcmV?d00001 From 7b75289a294a0f4865e8d5b9564b6583f5d01aec Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Wed, 24 Apr 2013 20:39:28 +0200 Subject: [PATCH 02/26] =?UTF-8?q?Fix=20issue=20#63=20:=20gestion=20des=20c?= =?UTF-8?q?ouleurs=20d=C3=A9grad=C3=A9s=20et=20des=20transitions=20pour=20?= =?UTF-8?q?plus=20de=20navigateurs=20(utilisation=20des=20pr=C3=A9fixes=20?= =?UTF-8?q?dans=20une=20feuille=20fallback.css)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/App_FrontController.php | 1 + public/theme/fallback.css | 65 +++++++++++++++++++++++++++++++++++++ public/theme/freshrss.css | 2 +- public/theme/global.css | 19 ++++------- 4 files changed, 74 insertions(+), 13 deletions(-) create mode 100644 public/theme/fallback.css diff --git a/app/App_FrontController.php b/app/App_FrontController.php index 5a66ae1dd..cf32a1c44 100644 --- a/app/App_FrontController.php +++ b/app/App_FrontController.php @@ -41,6 +41,7 @@ class App_FrontController extends FrontController { } private function loadStylesAndScripts () { + View::appendStyle (Url::display ('/theme/fallback.css')); View::appendStyle (Url::display ('/theme/global.css')); View::appendStyle (Url::display ('/theme/freshrss.css')); if (login_is_conf ($this->conf)) { diff --git a/public/theme/fallback.css b/public/theme/fallback.css new file mode 100644 index 000000000..579b2eaa8 --- /dev/null +++ b/public/theme/fallback.css @@ -0,0 +1,65 @@ +.btn { + background: #fff; + background: -moz-linear-gradient(top, #fff 0%, #eee 100%); + background: -webkit-linear-gradient(top, #fff 0%, #eee 100%); + background: -o-linear-gradient(top, #fff 0%, #eee 100%); + background: -ms-linear-gradient(top, #fff 0%, #eee 100%); +} + .btn:hover { + background: #f0f0f0; + background: -moz-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%); + background: -webkit-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%); + background: -o-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%); + background: -ms-linear-gradient(top, #f8f8f8 0%, #f0f0f0 100%); + } + .btn.btn-important { + background: #0084CC; + background: -moz-linear-gradient(top, #0084CC 0%, #0045CC 100%); + background: -webkit-linear-gradient(top, #0084CC 0%, #0045CC 100%); + background: -o-linear-gradient(top, #0084CC 0%, #0045CC 100%); + background: -ms-linear-gradient(top, #0084CC 0%, #0045CC 100%); + } + .btn.btn-important:hover { + background: -moz-linear-gradient(top, #0066CC 0%, #0045CC 100%); + background: -webkit-linear-gradient(top, #0066CC 0%, #0045CC 100%); + background: -o-linear-gradient(top, #0066CC 0%, #0045CC 100%); + background: -ms-linear-gradient(top, #0066CC 0%, #0045CC 100%); + } + .btn.btn-attention { + background: #E95B57; + background: -moz-linear-gradient(top, #E95B57 0%, #BD362F 100%); + background: -webkit-linear-gradient(top, #E95B57 0%, #BD362F 100%); + background: -o-linear-gradient(top, #E95B57 0%, #BD362F 100%); + background: -ms-linear-gradient(top, #E95B57 0%, #BD362F 100%); + } + .btn.btn-attention:hover { + background: -moz-linear-gradient(top, #D14641 0%, #BD362F 100%); + background: -webkit-linear-gradient(top, #D14641 0%, #BD362F 100%); + background: -o-linear-gradient(top, #D14641 0%, #BD362F 100%); + background: -ms-linear-gradient(top, #D14641 0%, #BD362F 100%); + } + + +.nav-head { + background: #fff; + background: -moz-linear-gradient(top, #fff 0%, #f0f0f0 100%); + background: -webkit-linear-gradient(top, #fff 0%, #f0f0f0 100%); + background: -o-linear-gradient(top, #fff 0%, #f0f0f0 100%); + background: -ms-linear-gradient(top, #fff 0%, #f0f0f0 100%); +} + +.header > .item.search input { + -moz-transition: width 200ms linear; + -webkit-transition: width 200ms linear; + -o-transition: width 200ms linear; + -ms-transition: width 200ms linear; +} + +@media(max-width: 840px) { + .aside { + -moz-transition: width 200ms linear; + -webkit-transition: width 200ms linear; + -o-transition: width 200ms linear; + -ms-transition: width 200ms linear; + } +} diff --git a/public/theme/freshrss.css b/public/theme/freshrss.css index d39ca7fc8..95809f653 100644 --- a/public/theme/freshrss.css +++ b/public/theme/freshrss.css @@ -24,7 +24,7 @@ } .header > .item.search input { width: 200px; - transition: all 200ms linear; + transition: width 200ms linear; } .header .item.search input:focus { width: 300px; diff --git a/public/theme/global.css b/public/theme/global.css index 7bae3f432..84fbca3cb 100644 --- a/public/theme/global.css +++ b/public/theme/global.css @@ -173,8 +173,7 @@ input, select, textarea { min-height: 37px; min-width: 15px; padding: 5px 10px; - background: #fff; - background: linear-gradient(#fff, #eee); + background: linear-gradient(to bottom, #fff 0%, #eee 100%); border-radius: 3px; border: 1px solid #ddd; border-bottom: 1px solid #aaa; @@ -190,8 +189,7 @@ input, select, textarea { line-height: 25px; } .btn:hover { - background: #f0f0f0; - background: linear-gradient(#f8f8f8, #f0f0f0); + background: linear-gradient(to bottom, #f8f8f8, #f0f0f0); text-decoration: none; } .btn.active, @@ -201,14 +199,13 @@ input, select, textarea { } .btn.btn-important { - background: #0084CC; - background: linear-gradient(#0084CC, #0045CC); + background: linear-gradient(to bottom, #0084CC, #0045CC); color: #fff; border: 1px solid #0062B7; text-shadow: 0px -1px 0 #aaa; } .btn.btn-important:hover { - background: linear-gradient(#0066CC, #0045CC); + background: linear-gradient(to bottom, #0066CC, #0045CC); } .btn.btn-important:active { background: #0044CB; @@ -216,14 +213,13 @@ input, select, textarea { } .btn.btn-attention { - background: #E95B57; - background: linear-gradient(#E95B57, #BD362F); + background: linear-gradient(to bottom, #E95B57, #BD362F); color: #fff; border: 1px solid #C44742; text-shadow: 0px -1px 0px #666; } .btn.btn-attention:hover { - background: linear-gradient(#D14641, #BD362F); + background: linear-gradient(to bottom, #D14641, #BD362F); } .btn.btn-attention:active { background: #BD362F; @@ -289,8 +285,7 @@ input, select, textarea { .nav-head { display: block; margin: 0; - background: #fff; - background: linear-gradient(#fff, #f0f0f0); + background: linear-gradient(to bottom, #fff, #f0f0f0); border-bottom: 1px solid #ddd; text-align: right; } From a6982216253d1356621916bb2b7734320fedec0d Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Wed, 24 Apr 2013 22:14:49 +0200 Subject: [PATCH 03/26] =?UTF-8?q?Fix=20issue=20#55=20:=20affichage=20des?= =?UTF-8?q?=20tags=20associ=C3=A9s=20aux=20articles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/Entry.php | 3 +- app/views/index/index.phtml | 18 +++++ public/theme/global.css | 4 ++ public/theme/icons/tag.png | Bin 0 -> 196 bytes public/theme/icons/tag.svg | 134 ++++++++++++++++++++++++++++++++++++ 5 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 public/theme/icons/tag.png create mode 100644 public/theme/icons/tag.svg diff --git a/app/models/Entry.php b/app/models/Entry.php index 230b457bf..3daec5aa9 100755 --- a/app/models/Entry.php +++ b/app/models/Entry.php @@ -216,7 +216,7 @@ class Entry extends Model { class EntryDAO extends Model_pdo { public function addEntry ($valuesTmp) { - $sql = 'INSERT INTO entry(id, guid, title, author, content, link, date, is_read, is_favorite, is_public, id_feed, lastUpdate) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; + $sql = 'INSERT INTO entry(id, guid, title, author, content, link, date, is_read, is_favorite, is_public, id_feed, lastUpdate, tags) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; $stm = $this->bd->prepare ($sql); $values = array ( @@ -232,6 +232,7 @@ class EntryDAO extends Model_pdo { $valuesTmp['is_public'], $valuesTmp['id_feed'], $valuesTmp['lastUpdate'], + $valuesTmp['tags'], ); if ($stm && $stm->execute ($values)) { diff --git a/app/views/index/index.phtml b/app/views/index/index.phtml index 6889a8b51..ff7325996 100644 --- a/app/views/index/index.phtml +++ b/app/views/index/index.phtml @@ -89,6 +89,24 @@ if (isset ($this->entryPaginator)) { + tags(); ?> + +
  • + +
  • + diff --git a/public/theme/global.css b/public/theme/global.css index 84fbca3cb..d619c4e99 100644 --- a/public/theme/global.css +++ b/public/theme/global.css @@ -511,3 +511,7 @@ input, select, textarea { background-image: url("icons/share.png"); background-image: url("icons/share.svg"); } + .icon.i_tag { + background-image: url("icons/tag.png"); + background-image: url("icons/tag.svg"); + } diff --git a/public/theme/icons/tag.png b/public/theme/icons/tag.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1a13833f9f0687a040e4c726b71befa4acc629 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjS@gb0&%`=2-cK%qcS7sn8b({KG&i#9m$cvt3JJNV+H zwANg1@i!|MH#j(?{5x=agRyg3)-rv6`9G}pwI^Ir{W>vPzh(Arc7_Re&gN*_OB`l+ k@J?~%)M=i_WY_jE^K4bTJd3&N9?) + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + + + + + + + + + From a3b989b5e42618766bc8facb88ae448740c1ae1b Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 25 Apr 2013 23:26:29 +0200 Subject: [PATCH 04/26] Mise en place de la structure permettant de traduire l'appli (voir bug #38) pour le layout > encore beaucoup de boulot ! --- app/App_FrontController.php | 3 +++ app/i18n/fr.php | 42 ++++++++++++++++++++++++++++++++ app/layout/aside_configure.phtml | 8 +++--- app/layout/aside_feed.phtml | 10 ++++---- app/layout/aside_flux.phtml | 20 +++++++-------- app/layout/header.phtml | 18 +++++++------- app/layout/nav_menu.phtml | 22 ++++++++--------- 7 files changed, 84 insertions(+), 39 deletions(-) create mode 100644 app/i18n/fr.php diff --git a/app/App_FrontController.php b/app/App_FrontController.php index cf32a1c44..177e83b66 100644 --- a/app/App_FrontController.php +++ b/app/App_FrontController.php @@ -11,6 +11,9 @@ class App_FrontController extends FrontController { $this->loadModels (); Session::init (); // lancement de la session doit se faire après chargement des modèles sinon bug (pourquoi ?) + Session::_param ('language', 'fr'); + Translate::init (); + $this->loadParamsView (); $this->loadStylesAndScripts (); $this->loadNotifications (); diff --git a/app/i18n/fr.php b/app/i18n/fr.php new file mode 100644 index 000000000..753a0d469 --- /dev/null +++ b/app/i18n/fr.php @@ -0,0 +1,42 @@ + 'Connexion', + 'logout' => 'Déconnexion', + 'search_on_title' => 'Rechercher sur les titres', + + 'configuration' => 'Configuration', + 'general_and_reading' => 'Général et lecture', + 'categories' => 'Catégories', + 'category' => 'Catégorie', + 'shortcuts' => 'Raccourcis', + 'about' => 'À propos', + + 'your_rss_feeds' => 'Vos flux RSS', + 'add_rss_feed' => 'Ajouter un flux RSS', + 'no_rss_feed' => 'Aucun flux RSS', + 'import_export_opml' => 'Importer / exporter (OPML)', + + 'subscription_management' => 'Gestion des abonnements', + 'all_feeds' => 'Tous (%d)', + 'favorite_feeds' => 'Favoris (%d)', + 'not_read' => '%d non lu', + 'not_reads' => '%d non lus', + + 'filter' => 'Filtrer', + 'see_website' => 'Voir le site', + 'administration' => 'Gestion', + 'actualize' => 'Actualiser', + + 'mark_read' => 'Marquer comme lu', + 'mark_all_read' => 'Tout marquer comme lu', + 'mark_feed_read' => 'Marquer le flux comme lu', + 'mark_cat_read' => 'Marquer la catégorie comme lue', + 'before_one_day' => 'Antérieurs à 1 jour', + 'before_one_week' => 'Antérieurs à 1 semaine', + 'display' => 'Affichage', + 'show_all' => 'Tout afficher', + 'show_not_reads' => 'Afficher les non lus', + 'older_first' => 'Plus anciens en premier', + 'newer_first' => 'Plus récents en premier', +); diff --git a/app/layout/aside_configure.phtml b/app/layout/aside_configure.phtml index ee527d75e..d91aebbdd 100644 --- a/app/layout/aside_configure.phtml +++ b/app/layout/aside_configure.phtml @@ -1,13 +1,13 @@ diff --git a/app/layout/aside_feed.phtml b/app/layout/aside_feed.phtml index bd92b3393..ff03b5552 100644 --- a/app/layout/aside_feed.phtml +++ b/app/layout/aside_feed.phtml @@ -1,9 +1,9 @@ diff --git a/app/layout/aside_flux.phtml b/app/layout/aside_flux.phtml index 3a6ecb304..60fcbe457 100644 --- a/app/layout/aside_flux.phtml +++ b/app/layout/aside_flux.phtml @@ -22,7 +22,7 @@ conf) || is_logged ()) { ?>
  • @@ -32,9 +32,9 @@ @@ -44,7 +44,7 @@ @@ -58,7 +58,7 @@ name (); ?> 0) { ?> - non lu 1 ? 's' : ''; ?> + 1 ? Translate::t ('not_reads', $catNotRead) : Translate::t ('not_read', $catNotRead); ?> @@ -73,14 +73,14 @@ diff --git a/app/layout/header.phtml b/app/layout/header.phtml index 77cd1b50a..cab56e7d8 100644 --- a/app/layout/header.phtml +++ b/app/layout/header.phtml @@ -1,23 +1,23 @@ conf)) { ?>
    -

    FreshRSS

    +

    diff --git a/app/layout/nav_menu.phtml b/app/layout/nav_menu.phtml index 5d7dd3091..02e340ca1 100644 --- a/app/layout/nav_menu.phtml +++ b/app/layout/nav_menu.phtml @@ -5,19 +5,19 @@ get_f) { $get = 'f_' . $this->get_f; - $string_mark = 'Marquer le flux comme lu'; + $string_mark = Translate::t ('mark_feed_read'); } elseif ($this->get_c) { $get = 'c_' . $this->get_c; - $string_mark = 'Marquer la catégorie comme lue'; + $string_mark = Translate::t ('mark_cat_read'); } ?> conf) || is_logged ()) { ?>
    - Marquer comme lu +
    @@ -41,23 +41,23 @@ diff --git a/app/models/Feed.php b/app/models/Feed.php index 222e22256..08cf7425f 100644 --- a/app/models/Feed.php +++ b/app/models/Feed.php @@ -59,9 +59,13 @@ class Feed extends Model { if ($raw) { return $this->httpAuth; } else { + $pos_colon = strpos ($this->httpAuth, ':'); + $user = substr ($this->httpAuth, 0, $pos_colon); + $pass = substr ($this->httpAuth, $pos_colon + 1); + return array ( - 'username' => '', - 'password' => '' + 'username' => $user, + 'password' => $pass ); } } @@ -134,7 +138,12 @@ class Feed extends Model { ); } else { $feed = new SimplePie (); - $feed->set_feed_url (preg_replace ('/&/', '&', $this->url)); + $url = preg_replace ('/&/', '&', $this->url); + if ($this->httpAuth != '') { + $url = preg_replace ('#((.+)://)(.+)#', '${1}' . $this->httpAuth . '@${3}', $url); + } + + $feed->set_feed_url ($url); $feed->set_cache_location (CACHE_PATH); $feed->init (); @@ -144,6 +153,9 @@ class Feed extends Model { $subscribe_url = $feed->subscribe_url (); if (!is_null ($subscribe_url) && $subscribe_url != $this->url) { + if ($this->httpAuth != '') { + $subscribe_url = preg_replace ('#((.+)://)((.+)@)(.+)#', '${1}${5}', $subscribe_url); + } $this->_url ($subscribe_url); } $title = $feed->get_title (); @@ -205,7 +217,7 @@ class Feed extends Model { class FeedDAO extends Model_pdo { public function addFeed ($valuesTmp) { - $sql = 'INSERT INTO feed (id, url, category, name, website, description, lastUpdate, priority, error) VALUES(?, ?, ?, ?, ?, ?, ?, 10, 0)'; + $sql = 'INSERT INTO feed (id, url, category, name, website, description, lastUpdate, priority, httpAuth, error) VALUES(?, ?, ?, ?, ?, ?, ?, 10, ?, 0)'; $stm = $this->bd->prepare ($sql); $values = array ( @@ -216,6 +228,7 @@ class FeedDAO extends Model_pdo { $valuesTmp['website'], $valuesTmp['description'], $valuesTmp['lastUpdate'], + base64_encode ($valuesTmp['httpAuth']), ); if ($stm && $stm->execute ($values)) { @@ -231,6 +244,10 @@ class FeedDAO extends Model_pdo { $set = ''; foreach ($valuesTmp as $key => $v) { $set .= $key . '=?, '; + + if ($key == 'httpAuth') { + $valuesTmp[$key] = base64_encode ($v); + } } $set = substr ($set, 0, -2); @@ -408,7 +425,7 @@ class HelperFeed { $list[$key]->_lastUpdate ($dao['lastUpdate']); $list[$key]->_priority ($dao['priority']); $list[$key]->_pathEntries ($dao['pathEntries']); - $list[$key]->_httpAuth ($dao['httpAuth']); + $list[$key]->_httpAuth (base64_decode ($dao['httpAuth'])); if (isset ($dao['id'])) { $list[$key]->_id ($dao['id']); diff --git a/app/views/configure/feed.phtml b/app/views/configure/feed.phtml index 73b70ec4c..0d9c5cae6 100644 --- a/app/views/configure/feed.phtml +++ b/app/views/configure/feed.phtml @@ -58,20 +58,21 @@ - +
    @@ -82,5 +83,5 @@
    -
    +
    From 21dc4ceace513a0d6cd934f5fc4bb9cc643bb570 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sat, 27 Apr 2013 22:33:14 +0200 Subject: [PATCH 13/26] Fix issue #64 : stockage des favicons en local --- app/layout/aside_feed.phtml | 2 +- app/layout/aside_flux.phtml | 2 +- app/models/Feed.php | 10 ++++++++++ app/views/index/index.phtml | 2 +- lib/lib_rss.php | 38 +++++++++++++++++++++++++++++++++++++ 5 files changed, 51 insertions(+), 3 deletions(-) diff --git a/app/layout/aside_feed.phtml b/app/layout/aside_feed.phtml index 4be37868d..ec4993a70 100644 --- a/app/layout/aside_feed.phtml +++ b/app/layout/aside_feed.phtml @@ -43,7 +43,7 @@ feeds as $feed) { ?>
  • - + name (); ?>
  • diff --git a/app/layout/aside_flux.phtml b/app/layout/aside_flux.phtml index 60fcbe457..d2e5341e3 100644 --- a/app/layout/aside_flux.phtml +++ b/app/layout/aside_flux.phtml @@ -87,7 +87,7 @@ nbNotRead (); ?> - + 0 ? '' : ''; ?> 0 ? '(' . $not_read . ') ' : ''; ?> diff --git a/app/models/Feed.php b/app/models/Feed.php index 08cf7425f..97cbe55d1 100644 --- a/app/models/Feed.php +++ b/app/models/Feed.php @@ -77,6 +77,16 @@ class Feed extends Model { $feedDAO = new FeedDAO (); return $feedDAO->countNotRead ($this->id ()); } + public function favicon () { + $file = '/data/favicons/' . $this->id () . '.ico'; + + $favicon_url = Url::display ($file); + if (!file_exists (PUBLIC_PATH . $file)) { + $favicon_url = dowload_favicon ($this->website (), $this->id ()); + } + + return $favicon_url; + } public function _id ($value) { $this->id = $value; diff --git a/app/views/index/index.phtml b/app/views/index/index.phtml index a7b67bcbc..c9be7169d 100644 --- a/app/views/index/index.phtml +++ b/app/views/index/index.phtml @@ -49,7 +49,7 @@ if (isset ($this->entryPaginator)) { feed (true); ?> -
  • name (); ?>
  • +
  • name (); ?>
  • title (); ?>
  • date (); ?>
  • diff --git a/lib/lib_rss.php b/lib/lib_rss.php index 76c304064..e004b7498 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -152,3 +152,41 @@ function get_content_by_parsing ($url, $path) { throw new Exception (); } } + +/* Télécharge le favicon d'un site, le place sur le serveur et retourne l'URL */ +function dowload_favicon ($website, $id) { + $url = 'http://g.etfv.co/' . $website; + $favicons_dir = PUBLIC_PATH . '/data/favicons'; + $dest = $favicons_dir . '/' . $id . '.ico'; + $favicon_url = '/data/favicons/' . $id . '.ico'; + + if (!is_dir ($favicons_dir)) { + if (!mkdir ($favicons_dir, 0755, true)) { + return $url; + } + } + + if (!file_exists ($dest)) { + $c = curl_init ($url); + curl_setopt ($c, CURLOPT_HEADER, false); + curl_setopt ($c, CURLOPT_RETURNTRANSFER, true); + curl_setopt ($c, CURLOPT_BINARYTRANSFER, true); + $imgRaw = curl_exec ($c); + + if (curl_getinfo ($c, CURLINFO_HTTP_CODE) == 200) { + $file = fopen ($dest, 'w'); + if ($file === false) { + return $url; + } + + fwrite ($file, $imgRaw); + fclose ($file); + } else { + return $url; + } + + curl_close ($c); + } + + return $favicon_url; +} From a0d9d93ad2f6a174c0476bd596d6fddda77d0b04 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sun, 28 Apr 2013 13:30:34 +0200 Subject: [PATCH 14/26] =?UTF-8?q?Fix=20issue=20#62=20:=20cr=C3=A9ation=20d?= =?UTF-8?q?'un=20logo=20(temporaire=20=3F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/layout/header.phtml | 1 + app/layout/layout.phtml | 3 + public/favicon.ico | Bin 0 -> 1150 bytes public/favicon.png | Bin 0 -> 685 bytes public/logo.png | Bin 0 -> 1743 bytes public/logo.svg | 535 ++++++++++++++++++++++++++++++++++++++ public/theme/freshrss.css | 7 + 7 files changed, 546 insertions(+) create mode 100644 public/favicon.ico create mode 100644 public/favicon.png create mode 100644 public/logo.png create mode 100644 public/logo.svg diff --git a/app/layout/header.phtml b/app/layout/header.phtml index cab56e7d8..d6fe41950 100644 --- a/app/layout/header.phtml +++ b/app/layout/header.phtml @@ -11,6 +11,7 @@

    +