From 7fa85b8b0a3e3da720981a9997848854c0bfa51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Fra=C3=9F?= Date: Tue, 30 Jul 2024 10:01:39 +0200 Subject: [PATCH] [mod] --- .gitignore | 1 + data-example.json | 4 +-- source/index.html.php | 23 ++++++++++--- source/media/icons/tasks.png | Bin 0 -> 18956 bytes source/media/icons/tasks.svg | 57 ++++++++++++++++++++++++++++++++ source/templates/entry.html.tpl | 4 +-- source/templates/main.html.tpl | 2 +- tools/build | 1 + 8 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 .gitignore create mode 100644 source/media/icons/tasks.png create mode 100644 source/media/icons/tasks.svg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d94939 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.geany diff --git a/data-example.json b/data-example.json index 45b81f8..f69fc64 100644 --- a/data-example.json +++ b/data-example.json @@ -5,8 +5,8 @@ "active": true, "target": "https://example.org", "label": "Example", - "image": "https://cdn.iconscout.com/icon/premium/png-128-thumb/plant-2941089-2470533.png" + "image": "https://cdn.iconscout.com/icon/premium/png-128-thumb/plant-2941089-2470533.png", + "open_in_new_tab": false } ] } - diff --git a/source/index.html.php b/source/index.html.php index 66edda1..2ccd9ba 100644 --- a/source/index.html.php +++ b/source/index.html.php @@ -42,10 +42,23 @@ function template_render_by_name( function main( ) : void { - $data = \json_decode( + $data_raw = \json_decode( \file_get_contents(__DIR__ . '/data.json'), true ); + $data = [ + 'title' => ($data_raw['title'] ?? 'Portal'), + 'entries' => \array_map( + fn($entry_raw) => [ + 'active' => ($entry_raw['active'] ?? true), + 'target' => ($entry_raw['target'] ?? '#'), + 'label' => ($entry_raw['label'] ?? ''), + 'image' => ($entry_raw['image'] ?? ''), + 'open_in_new_tab' => ($entry_raw['open_in_new_tab'] ?? false), + ], + ($data_raw['entries'] ?? []), + ), + ]; print( template_render_by_name( 'main', @@ -57,14 +70,16 @@ function main( fn($entry) => template_render_by_name( 'entry', [ + 'a_href' => $entry['target'], + 'a_target' => ($entry['open_in_new_tab'] ? '_blank' : '_self'), + 'img_src' => $entry['image'], + 'img_alt' => $entry['label'], 'label' => $entry['label'], - 'target' => $entry['target'], - 'image' => $entry['image'], ] ), \array_values(\array_filter( $data['entries'], - fn($entry) => ($entry['active'] ?? true) + fn($entry) => $entry['active'] )) ) ), diff --git a/source/media/icons/tasks.png b/source/media/icons/tasks.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e2bdeab0b8e4883ed7f8c1dccb9714d0623ef4 GIT binary patch literal 18956 zcmdQ~gF)0CM!Fj$q$DmOEvbYcTxkU9?hfe?B!o+MgVJ4sG%6tR#@~DY z#QQ$@?qxVLbLN~qd#}Cr+ELH6Rj@HAFaQ9+R#R2f0{|%a6$+psgC7{eI)fD9ne3y=Md^*gO76-fRkE(y< zT*=af;nC6Kp=q%fphMM(pUH92(cN}pTy)+RLK)CPffBvnhG{cb#D3&dQt)z2kPa>Q|JzSk|4a^W?B-T-|LUY` z__)HN%#YLiQ09I?oVwBfZZunz-C11&sKN>=3rhNVN>U89Ok2N3C;aK1hDW?wbE%)> zGht#tU{Jn9GJh>d6FsdiaO&?LrWD$YHRzJqL~xoI#J{9hp*^Jzg)_bCYcpTGUzd6$ z@+@vb2DqFKwA^l|vN%4W6O<<65gQONA%~({Z!&74QCgOjQn0LSyLQru$DfFH3Vq*w zM3wG0`y*}&+-Awh&hS%52~{*pJk0;{Q8QJYkqR6C8Ib$bEZQVMBfNrpxt* z9tRW;#`HumcY2P1MKKZ&0=+)RN2mZYfdOz_8Cc1~BtyQ$kKiYL^-)Po8Mj6;4u`Dr zf|SMs1Qs^rx~u5i!s-gZfCt$V{*3M`_5>o#ekL{QBjcXGl9NxG4z#t|tpdG1*`W@4 ziP^kiRpiSZ@93T#+qU5%Cv=anyeC2Fv!+vV$6trRPm0l)Wtk=FC6FAf6j~sP^hhk2 z@I0&RA>PH+0|N{@-Cm;7x`ba%QN;1oURkMeR@sALKl3H%<)b!j*aRInH8Pc;4OTS( z)_%Z5LEeci8nYVqtXf?t>MA-vwLS`rNM_50{F3yduP}JE&Ul1mRgIrg5Cuk7c5ZX4 z0UjSHOhk9FVjpiyvKC;$kR=}Ucz<<|^70c||6A!Fn|^GsVTAzIh|YqR4?}1}zRWx0 zeuC9uKGI8M7-?W%g7qCHO+Atb?TD%@%NPL=&1dh$@bxvTA{*u16=RRY47O^VqsGfp z&-Br?pkPCWzQ_bRxkTHtUpC$Y&J2B0YGrZVF+ZE#eJORn)fFE2?MsOeQU&nY1pM68 z^oPeQymEPbc5}Ab8S7enz3E^eh{s7nMlc{+7MPFx(3c#nnQ1SHofl=1 zw1lQpO*x!qw-$!Jme+|0XLmD`Qw}PhY~jA#2(`YX8+<9*7UgAfkTF`l>sy6NOG0d* zr^NmBU=&SRFl_qj5Wl*Bm9Q1Avj7{?b1dT10KyyH3~L{e^DfDB8j_6Sa-GVw3)3=#=5+FT_MkLK1jqz!!FUruC`O%(DCS1T40S z@Mn}7bi-cqT|+kEw%f|Ed}fTr%`t1S1Ue1Oit>UcgX!ygBa;z-oaP0?xBT2T5wF?@ zm>_jz-x%$5>|MTjN`VuIJSn#8KE0+XQ9#tmZRIK&44wVB^z&@J zcmeG6WNyPay4B^#nPLe)@ns``af$7v7Zq9I@HJFOD=q3D1xfe*+o&^kV>K*la+Snme`->kJur$-uWv z2diT05RiQ(I@mD4Bm+d}t5}ZH&CflPg9G%z$Y=!W$0Q3kem8AxO9pij+Z;l)#7!ie z+Zf?qr1`*ZX@q=`5=tY&8^jnD`?~oP_}Bt zs2OES-OO?uLdu0c^>6Go5?uEpyw8L+*J;gIJ@ zoV!HlJtv}N=h{!pced|*3-Q6OEr2>Tp&caP>ZRrHO@L?jWy#;6*REnD;Oeo%?%`%@bkVCz5 z#3X!tL{s;`Gm=ymRg(iI3_0kBt@2LonvZmof9WB^1YoQso7w$V=b^9OV&`oukYlDPWf%0CxUNo55++@!7s_FO%Ak54iecRJ_y=O%MJ=~OTIT% z#c)|-NrBQ$1$lOfBs301o9^1F%+^o$mfEo#5x|UxBz=RHqrsC#AZxX&z$dx}aOO5yH6ZvRejCk1$3fu7v8`&NjJgiGL1g`ebjVa`Nja^r< z0SnyP@WU$%iVE@yFp&UWdMhyC?pPs(4CLcS zl;A3m50H6VBll8KE}QN-NBUJU04(ngv3jT=Y{HnphH$JW9#9U$>RpUxF?C>8<|6*n znPQjeSeRkw0!AgmRdFy1k+4Hn zSz%!VeFfsp*!A%8!VjjO8dLi`*X9`jjuI{rS&A`yxE>`k@-iSh8 z+bhLLYeH7JU@^5VCROjd%KNGbCaN|nb04WXy~k75^rcTik#WF7Y#yE!$HmHrmnd#^ zN(v!*m=vtgcvLUsd?Ic*i-iqK(&d*K6(w|DG7ALeGiwrf6{>2qc!u5w5}>21gtsc~ zsfGRfRMtw+8&({lTIrQ0Co)bMrd~?YI{P(9@12`XO94x|hc(zt1E|+p^zQv`DchA5;3orqm zM)*o^kVr4_FwqU)OAa`_nlwuCOFC@hPfub`O_V>ns)@ct?XqG=f5py*!~ZZ$B|V=G zHNn~u2j7=ZDEW=PS-$Tz{A#NPp{CcYM&}8Jyvm>DWPd=5yFo`y{QAhBPzP_<#g6@z zg%wYhZ%o&Px3W&(7F{kp*9P>wettiA*3fijhA?n!l7Bb(YEb5#BjYw0`?IRdL-F3i zz#&@a2X3#`9>%Sucga`;$~8Z|2%YcfExHRaM54;=!$o+3E0Dq+PFv!^hcrL5z8d}XTjm|nmX-@*;N;3@KZsf4K{Js_osrU{SKY8a8`ngk*o8%G zw3p?Q4BXZ$Fq$@r*0PYCv3D9YwxG?XbzT*OXU++%P<%pr7M7h;^|uKIelc+Gnz)p*t6wAS+EhS!jpXFO2Y+s!2=Pa1{OTjdAWqx*N) zs@|>k?fC1zDt48`-!Whnm?0ywdEh>;Uv<9yww^+`Yos8FD1MJWZzU_|F7KrJ??nNF zJ|0GdCeqtjaVVWRP*9g{@cm?Dg<;9EY2w@A&04Q|R96m1btg>I5x1t`X(BO=K_)eJ#{KT|JnjmDJXW7k&% zknQJ2jJe=K>CC_u2A5dT9y;3BfYK2WfHo?}0BvpeVTJ^Uq7!KDn#99L?FXWgilyuJE~8Oh}>ohr2Ze_#`6D&61$hT2fPBRsgVI?z0@>Sm2eX)<7! zfMgWO7(WQkkmLJXR)AR3nqqb#gPKfHt9$J`i#&DZP4J(LNqG_CpK4H5QaWx1VD(%u zcT_z68U9*JuoadK#rhUf&1PrAhaO9`v3mSbRIf3HdFaI_-zVo<6EwtTOopWa^#}PdXz%ga}&AAnRv1o_{MIaKT z!{I_;{}i{8BG5LQ#%}tvP)>6bf<4L2Y@iTK%<)`8FlTikq2TIht}wBwJ|iVyV!5OD zsi2QHpBga70QFMik@+Czdhx43@WOFk!` zJlE9{4uMyUZJ@1fDy=bDYv*QwvB#Gg_>49C8%G$+I!ydIBT`aE|4B?KDZa=V@ugqJ zFQvE5rtJR9^+%%*0TI3B-hP415)F)k8N-}+(P4_1sT$%|;56{C^TXdSt#t(#R2?>d zEmONb=-1TVa1ZysJ^p?$xm`7zBSz{=P7=VT;z=Ut)mg(EQHM+Dmu<8FlQ+o%(Mhy$ z2gj27t>fr>IwY)Iu?xY_#q7yG*APd2u{_ih(KXL{$*Lnp@r=d=@ySZ(YZ1XOIfKUP znm)~-8QO7uubN>4=tEHG5Nz68P}E{^k@vOdPe(t*V|?a;lU`ns1S-2jSou{qd87v} zx?*;Cxu&=wcIdJXC_B#|YvgCC0NKcga13}{PAgnr0LNR)zN-)oPH|`sMB{B=V@J$r zhzrY26!3mOOSM=Y=7LP=l*2n87ti!<6ltz(DP;ClIRt6e!`PM7A~HGa+EDQ9bZTsU zB6J^D^scn5%_i)hmIaL}0Ub_a^bt-tT0)%IE5-(TNz?TG29RqCQjdI_PUIhPlcDt7 zDhBrwmE!RAI!>!eJ)#ZOW_R{qw*pGY`J8ftjyWp6!Q&W{818Ikf=t`GE&A&Hwj%p4 z9UlO#0ns3hdd#V;-W&0Df60u6h+dOEGlI5;ekuqbBb)EkbjOR4O7&>(5UeuhZC#o9 z0TV#Qo#u({tA}WlXUTI1l*m*=qSy5PL>oEEUJRGU#iP0l+4FEaV}O28;wI&C^atmT z=os|O3vIvM;X%z}tDm7nZITRulRf5#;`p#(&rs&OP(6g-h%Ec~r&fNual8SL|2a9i zDC2w?(Q+-J5uM2Ld1d(f67{g-T{*lr`<-}deVdDiR~x`G1`Rbc_|pTLkwG2l<0uxX zWhwE>NM&2nQScoXK-+sQZ7zbNv`r7%~d@ET25OXk+jJnX;*d3^`<@U?9;nyh_~ zDL3GS3hC9{_Zf5NceR+LdQj4z)-zn;2WUfX*w;OFuWV*VOr>|2*KC<7(fQ%#Vv$IT z32P=?#~iWS5Paa?2B5Eo0?$z+>5$WhAM4Yi_tyK4CHs~NOEjy)cTB%?qn=}GYaHD# zHSK}E|S&=ug)yK%?yZ+NZ_vbB8uen{OY+;}O(DOI zgY1yDEe+D~*wzZE40uX+S@Ci-8r)<2-fPkHnZ9G}7@3zW6HmM79@*N%-mu3ay?kXf zPTTVn5i35Q9_QD)=|D>jv3hNEJ#lafJ)l7va_cvZbZf9j#SM3g-Ff=E=-Xx|y`4MC ztQpy(?%Kvh;mv*7C~b;!BRV{9(`*2}#zuagFKeBj)xfx(pM~} z=$s&q@iuoBsUJA^t=;+?d{}d4SMUP3s0V3~x}>6W8W>mC{uLI32U!~b`18x4h{r9d zYW|;dww*oouYGnrV<*JtjJP8%f_@&{-jNIzrS$(%Op!xO9ISPXPuN(G_lztByo=ee zH#iqHd@XT-&GUNql6I4uXLq%!hNr*y84051F1zR;XYie~crcsMd3~jjSkUHne;fuZ z5hXtei>`uKK;y&D?O#%}D?=(xFU3c#nPfIrTnnn=cFTTl7oO5?zX}{YTFUCe(1zAY zka}ubjML_mu5U1S`*`djxGFKS8dHn*L40(p=7i(&a{m{K!(MHbx5t{p#D)t?@x$aG zfA;CfG3$V{+4$vBzb>g&tZnhM)rMTr4^gp$S&rP^&5^)s*y^BSY%(d_C-`flC4~xu+#GkrCkQbsJH=j*<2Oo@zqMuWCj?ryDX{g=)h53QZ zq(GkqZF!0txG@2aC3}Ed!EgN;?-po9bGq2vE}b82`dYfEKQnK4^SD~b4R|m=Y0vc2 z!Ry`cu{a#(H@M*JRNbbNgfljvT^&j7IedVFk2mm5dMYIk1;E>{9eY_+>9u+-q3D-o z$!BTw<*=#Tm9D)S{V)0CJk`$3`5xiPril@4gelH8YU%678ZIvF<7UGmiH{u(Uoqhi z@vvKNAZ1_FUFN%=P%PD^R-hH4Bgklu>T~lOXn^K+9M!?hbx_D?Yv{UXG$((RolMO( zf`>;+8fWW8>^GC_edDU_OAs|3uom3-r#&OepO-|K;i4v*`bAlu$6AeBN;w%|LlBeQ zcd1C`6pxb^61jFrw4RJc_UAj!Wr^fw6BX1NAA&V^?KR(M`ZNAHM6Y470dk`7=Whev zh{nHM(M~_*Y)x)HV+gYC{C)CF$ABAd3PmK`g(8{F-=XokOVv(e^YO)odYn@wAv(0XQ%AFX6P*3N7U`$J$VE5zu~6H;yoIj6@ymH<`**kOl*t!wAM3+25Om&$+%| zWDZEWE006ZF11jfW^OGz*wF;-{GzcDQ2XXV?4j-T*(g4Xu9mx_=hdyWB$$u9RD_+$ zAJxs0O3Njwc%7(8Zw5K;UT0Uqm2l?+qEc8>i}3Rr>r}V&{u!2z*(!A-vsT%R1bCIPbYxZ*P@|`&O+)*n=Wd zYgkv^l#;f~jvRs60HR}dZbWKjx8PtuObrTy>JBb0$jV)Eo-C3f3|$PpXy4o|@b9hf zn@#pU{aYaZ%oq~s`K0A6O2en_jbw0~CBIm$0ds3syUFvZKOXPVWQ~@}zyJP8mW4S* zxiYjZbY|X}`|Xl@c=;}jwOkN(*N+|c6Do90CwlIPlbd|hnukYPr!YYPyCm~DbA+r9 zFf#z=j`NKg5&*vlNin&|C05qr5WW;@HHB}Ogs)*7uBipl1hjk~{b8&yo2ufKh=+vL zgojkulyRJac?_O_Ku=+~GYkP}nh`p6WqFDB*`zv*G9ZX5~|lBnC6^;`)iv zxyeKkoye~-dPGKy$2+a;{yUSrBb|SV)XWw~lc7~)Lji0(l*#f!Vr`@Sr;gj5P($LA zFL^0TYa%iji~zP|H!;_UAejc^cc?x8$n(QQu5HxZamVFvPzLB!3JbNaiC&Z4>Py2E z((Ck)bS-YTOTJNI-ghGr@-dL6Gd!b4RXHx<#n=VFwH$_!{=Es$&dt!?dtsC{$fj>K;Ci7AKWD~U-XMYt; z=`{1h=KIVPM=x_x4T%cWSfbLW|BMmR2I`>D4SZY~vF;DZ>#I#a-s-@XMEs)h_h-}N zfyi|<(ukb5rb3tcSSfN%ovtPCZTr8xe_>L^#2(0U?i}lmZ()o1$5Wvj_3dRJ6NIk- z6L`~6(a-3LeR>f1ivV$205o|rww$->IX=l4VjlCxe^-#<->RfDN6QMr13}|KLO;zX z6%DC=Tyyt_%y1tPStK7%!8}fs_m~0+(c%M2mvQbgEp_E=e#wLas8cyC7JH_@t&oup zG%;z^B5SL!hs4mSWwWDd5D!MkkZak`g`3J_j_vVc%CoeQ@q+%UsTe;wV-k` z$>9RR$?#G|tiALxc30%qYZ7UiA@@%lktlP7sGYCGMJ?dlr+H5&}kl0Qn2p@j6 zpm_7erq`a<3Uw;l$*H_FljBo)=?ABP1!S}`&-!3G5`G4zI#mMtaBM{fkjpf6D99km zEH8^KO*9U$p~yf+s90)Sf2i~*eoM2f-f5s7kvDu7f7qlZiQX!(;zBPa7rr-laxTR+kAB zHXxJ_6ZnA)Mp9?xODEOA$_P;d}e;?Op<5+tAWbYGjK=chLk6H5USey zRN<`-58P&><^dIASEBDVGLD^$3iewwMKvwm=%IAU1gqR|kL-zznAaXJr9?fRj1sQ~ zvYf5gtORa|*K8BdW_5vNkm>8sfcKuJwl{H%4WW;hASZFwBNNYtu~BrO#m-xcxwi2b z4e+Lf!NC}I+owC;jhHeU%Qf;|ZX1xA=VmU{wgNIc2Bh39!!OKwqgkqNMq|{VbZCoc zrOi^m8VO0ywQk$L*dgJ15?3aNZ!N6`u8jR1G#R4x9nL0xT(r={Q;(oak&UFj;f`oK zjQ;L{8)W@?tJFH_x}LMP3px5rOi-HoB`E|?JsR)1K^#R(CCo{~kLfX4Ci~D@WfPVxQTXDq&nrbo7Mff;0Bbyq@%qXKvB_ zj^E=+B!E`ZhZYF$M+2WUvo+D*xL}Uzo#uvsU3+3y%MIaVs^O)m24Kr%Ii&pg=xkZb zZ1ihD$$#rC7DGY0-#LtZ7tOLtp8S_HGXy;=1Y@_G#B~$LkWKqeYlD>PN5jqfkcTSs`r`4vq_+F+u;+@it2dnGpp5*@~0WFP<|+`GFq6G_mVqborps8eAsi%3c|XCR_8GrecAF ziit3%Xim-SeNSVU|CdrmUyZ=)j6T2YA6qnPsU9dgsn+X3oM4(N9)8zM7G!v6zwFkV zQyMBC+SvEpm2qkMV7sY!Z0426dyp;F@QkA&blkIZwI;s7tPbl}sv-Og97gtiV z@#MQ9NI~+UV4m@3qQ_XF-TzP`CJwDAOvHQ7Ln7Op5nZDtAs33q-9%9G@$I4UB!=`Z zW@eotGLhph#fd@YA2*-Bt)WHcinn1pH-vGSpC@%rk|O|LX9)v==%jR6+D~YN3~*W* z={p)Jur|P?1~P|J>Vl)bi9vO8D&JDDxy{B`xs1I3-Uv5VczT>ftPB+irFviTl0wcB z`DVYwRMc?D1z!8daO>FG-=6Qs!nfpW=DetV&QrFA9(j0tZr=ZCjT%(<+N$N;trv_> z8@HoV;r|LBm!X#Pwi0P4`jxS(NZsPz?%9+V1?DGa!jHJE8H0<(e?NZ(v*4k1#P691 zcf2R5Tc#5RH^x z{&!v@5nFO-{)4N`@uu{Ir|t=QswZ_^%Ha2|`}wemP_nHNw5!~;m;oaO!eEj>C=)iC z@7JimtskDN|8egc)d_xSHr~5C^=JJ9h!TQnWqG})u6BTs3byyE0uT2%I*{CeJ2{WuP9v;VCGYj30caewu|3NO$jT_Jay+F ztoTtbdY>_*da}V8m%HIZe1MssQF&cy{RKBV%IwfHEidjy5O=ot>+ClFElw%GUX$aQ<{g@u`?RNn~W;EQZ z%re>;bgz}mfKW166%d-yqa*gA(@{?>Cd9YeM)21i`Gi_PUN_G~m3_?9ZTogX-hO?xyikWRAt?yt9uy>kku}Hl+=qFodXc(3jNSb<5TD9F~@s z*S4~|&*-{W@0s!E6vWRksFe{UA4367!HANd`tAlY_%xeedojXFtjr^|a&NtJbdsWf zPbP!bGc$V0?UG#d!uO_T77ucuJ~fT*%S{=@xw2YF8zNXEbVizdidr~aMF9sBZJ<#VM}P|;zhQ(wW75$I$y;;!y^N};>@_S`Da4g_>hASjVN{R`>XWv z;B@{3qrP)GpLM~Q8ei0!{^zcmLw{p+rs?rmGz|k?rvt6 zM<)835I1GLBghAISRFl{!W?F7V~0=!cP`S#N=*NK_S_+Vk1@Kyp1zny%w>l?^^;$S z<9*QEa%`iRO)~DT-zfoY1fHK!3<~%vFrSU$n~l}*WbXN|3OV(8zY*ncEoCJG|i1l|dfN2Rva)FPZ;qS72jFU5<*bLdUh{V+wn(pcN?s5U>{ z1R=&HEhZQrbHL@%97-|r-JDv4EGo;`c}dSUifCs2S{c#z6HPJwy> z_NcM@2zn0M3u>eGJ1%SOo45BRMc|p7=x2_&38lXSWIkUpDkftK?awqYL}tKXS1xzPP*Dpnmx@tFxBgMYy16` zB67aqEjRoQc?cRzH5|8?1xWwiz}xe{d>rn^sYAPX#RK~k?FEAKw0iA=8{DmDM&9B5 zu6I$Gej(o^J(Vax%;PsZyLCduU`O$xxH`_ zRxg&M_OT@+zHqPB#9p)Khfdmi@+@t>k7Pl+6eOH3*4FZ4rn^nFA%I|!Ed`uw)(*7@r|W0OzR1$!JuY-!LyksON`f65(q?;iO(@!-pa-mtT#3#K5ug01f|2rEsG zdEV2B_X`V>Y0sg-ntOu*%l(2b(pIkG5unZg%j$Vs$VUI%w3Z?YOJC$qoLrN2^P+oN zX0Beo^$H#Jd$h~le>5&8!b9P@^>kV*_>SA76XO>5Jfisq!Tfn|eIWWy zG+JsXCosT>{pY8CX|sN5gHmn}+9a{{=S_LP%>!wc*0O?b(BPsZvUsqN zSem^W)9n_&6HTgfXra{JV=%G^^2psIAYs?MdsUM8<7f4kt(n0Zv!nrDM2|JWV?TS1 zonET@?(c)&vxNWH6!O}2XykqZriaD8oRP%Nb9aU`erhxi3{ru`eqoWgbARdc{F`39 z33s!2=XQb(I>Ocu@7mPh{Y*T&lpscEb@Gq=y^RW9Nd`25g(i1a-u6to$}RW6{)Fri z6ixT@>ZaB>=W9A%t3&PdVX6Z$vm1WV^VDboG=Y?Lk7ul`c|g+j=OgpLntk2Fk{g8^ zEa=-1R|wtYY1O#V$^c#G$<_)5jvd>4j1T@XYxldAq4p7lpyQaWa<2PF6thu-zzG_Y zSrV9Apc)0?Qu0 zuHtTW$#1U3@*H`TG3@XMx5yJUx1fu=tTG^qzh}vC#Y7nLecrxHa&k)fbFiq6sdKI( z{k!TW&UQUUf}!bBrTymf=w#XM*HInme^l!9D@Z<*EcacA z6VLGSc&Q+E2f|G<{m=S9F4dlIM?#A+nr!G`y;$5=Gpqw@MVZbGF{7jVuC2-cE&u`v zmI4#NAYw`6+~@XO|Caq$N$5=SaXgJ?Pnq_&wb7uU#eQ{c5UXE08EKu{w_8X4`RB+; z4!igdJmXyw4F9ON>D#-N5R2FL#4X#~WuTx+h467lFV%mEI)-!BV`yaX&^u&y*s2VlrB7a2C?RoS&j{{nh$Q+{yJ~oMWtg$K>DD z6;GGk0hRc7QW{}tZU!P?FkGM^e$^M^=KkQz2&jGIPXp}v_~I&;zhoU5AD+VwIyFZd zL{1&0PtM!LCLz+l&xN?)ah0k{i_?}}Sc;O6_N|T@?bXQFw+(M?AWbqa$y+=rEqB~Mj-$G6 zu}J^wD2TCtdQYYQS5iYj@^b>|m)y@YzL;TZBye;^$2ab5~d}23>3Za%_h&@=^m(HU~v2gUSdd| zK+^ls7%=o*q{C-fx2Hp+mA6od?W;5TVWMOX59Tka2JoQ$x=Gu5?DnNrP zm~Ds4!t|Abl|v9@a0tApP^l)bq0-CkJP1P(cNwj_m>g%gI>J`)Y^ElvdU1O1b z5GSsEc1|q}&=-qxd)wsErYegI%4`IQo__N9=vxT9uMoY&8@=K7w{ww4m$tP|4oKUL(;%QDBi4dzm>2e+Nev}|J1%eQ!Ze?;+tk(jbG zxA`(*L#bvr3@ZExFp5oiAWgl^wK8uh(8ZLYFZDo;;E&I@|0VxNU562rN{rko(%B%eMu=KSM{N!uRDo=*Fj>IkovEI(G|>95D-thebV+5K3k`nx|= zoga*FpVM{g-NatLb|YS%heVLQczy6!U71d`l-_eg>7NZN z3#Bp<7uYOHz!LY~NDXoPR%OxMn3x%lBSA^_)Zl zqvOgEZP3nSwkw!a)mpdTb}Au#P&&d5aKE;PG@&3qH*V|EC9#4gD3>isk@qYR-E_*v0@i3>S#QfYqUx_)z0DqvT z=M?7M+`gdbSQ2Jv>Zo=vR3G+Kq&{I>Xcl32_&J>6JQJhzi&=QK#F1}Inel*n=1x}4 zzYt$Iwf4zBQOgC2P>DP=@WRDsQf2$)6AzH!seY7rf>u&YmwL;w*jM)+S=YKEk4@KF z@o8VaWS4q-!;9`Vo#-#Ilb0^HyBW*spuc8GEFRx&X>Fvg`)btmZsDt}Pi#Z7lAlHU z*EDrgMW93e(|5y93)O=SjI|3@8|BQ*$*582Y`){R14KX9K2}ZsHN}Sufn14&U`PT= zyAS7!i%vsiI&4sJ)X~>tP0@?#{b(2l2SqoIpd#puAll<+`35w(I-z;G{4en+CKy18 z+OE#|1xE?!SPd_&QU$I3PFHO~jp}PvQgA$N;{^d6?etu-Rxq_ScE6v9seF+k%eTnPpBwwwVmU+k(&7{;KrhaougBVr5n=uSSPM18?)#K7qRQ*Cf;X_3c_fIfUNaJMEx|CckRQ)MG2sJeHP!P9(Y z`3nD#0XUu)QpU<+;xD9rREjE<4;G$PEY_?n(Q>x1_`3)eHwh$lX9 zit)WLeD#{bzX6kxsHJ8>9d1D`xsz07#ZP;|aVhMo;e-?R83?5Tk*cpsddA8C>@N22 zm~U7dHQC7f?1^JD^?>%;ViC1LNj%6IS=5uM9I!D27JU6->TdbmYC7*-dd=VYkBC;1 zA*TF6aFgt&;>ba9R)OaH{UIvM{$?PWHh&QG5@j+HB*)9^84yj78dru%&?ND|2ZzXH zjX21*rV*AkS9U}s7DlrG@wMZ#PG`8fi|L0A?W5$G&_WbCf+-}huOM{m$2d-AuFG_u z1qQ#Hzd*KB#u&gQQXh;Gkow)ghFgL^WBQ6wjXLklDUP|r!rGo3N`#59`Nyc1zbtRI zHxfuzjtg()8t{U$@Ep(ip53t6+`@oPDO5@8;5 z0xDJ^H7=1T&kVq(h7OJu^;;+Z2)cVIia;!Ps=;6J4IHsADT1~|I@OO~WM|+NiRCns z&ups-m(?YTql_R)jMC)`S;r-qz-tbO;CM)q1aLl9+k+9TeMwiC4hL1Pt!_7s*`ShR zrVIkDl(X+)Qn`7z=Z5hd0F8Sp2;@|Or9s?XA1YMH}xZphzV zQ&zT7|Cs!dJvw2MJC$wtw4=bC1TORlI=I)&2QZ3WXUQR!Fjswe5m~M-aEGJp!^5;V z#-S{JQnzg*DML5(mFx66ryn-4)BZF07y8jt^IhSvCeTj*JOALxm&`C1gSNj!5np}> z#&H3W7aS7y)a8_;f6&g2QlT3*V)kd|%JyIXvPg5LqvY@X%sO6^$F;?) zEV+BnN)-H&`6lv(Zxxzl5S~gtLs5H=k8)5GDJZI;N2Mp^+W#)8pkQIN958UaqTeLR zW+n+F#Qk&q9Q~Xma6&c1Gw0lKXD%4IS1aRapwyb~!Y)D{7Zm!uO2@l2??QQ&zQ4?L z6a2V&ildP*)0isbp@V<>kTYxg)`!Om#Jl83z^Of?**XcvZ{%*N?eXU58VPrI@y!rv z*(508^^HBjSSSCn?sxoTDg`Q;6?Sw6C+FLW#1YQUhVadS->;UG4#!l|ull$?$p&2I6Ryt)+ zgQLm*+s?T=V8jXw!2<_SGJ1%ARuKJwVaaS5;BFJ|MuW-nKL$1!CBGeW<1-43|0Cz3 zght)$&zMbU>}#wHSLwFVZ>pfN3L9o(au{P zmD;~7BL9?sFj5?eDzo;fN2cW4XqN(|<$rn??(ue!OMzEH?!iSlgl9voY(B-98~k>l zbCW}$X)UeE$Q7wP#AH#I2_E?d`wO^UPLDYY=})T7*>xxgzG&KsfA9k*#|3%T`mNFg z&JCWRo}&V-3&SN#Xy#1X!KB%yk$#i@EA9;E&72pOjo@4yG1vE0jT=U=(d3_;!6|z) zwtl*?VC>04ScOzzS6G~H}rvH z!<;P|wrsY;w~!N6w=-l*GLC{$e(+x+LW(Q?}pCpTzt04CqRqw}z1;uMzx9K>K z7^ZFv68*Hx6Zti(;E%?3phLSYf+`?Y3VnSS^Cq`OsVS;1{9^#17`2xnBcfZ_R2S=0 z7lqHcDf|XR`~TDqQ-8>gK+*8WQaqPU%*igj<8h-LCj4>Cl9sOtBcDO!%jeAh?7>$Q z(U>vW6tF9DQ4bc&NVcAAi0?80Ys9BdEv5*_-I?8-e4Q%jA##!fU~dFEeK#O-f$MF< zpise~ch@c=QXi^v)4`^*9Egue_s{c?hrsc+kpd^^e-1dj)mLM-k`F~AK-6};^9dI7 z*iwwbEBR=cY0_QR(bs+vHu8a7#MSL9&?T~k!Q0wn`5LdwMZ-fzyCicG`G#LeI4GA=1rsECbcxRgWHGH|}ctU#A5h zBV8m+0Boe92Kzg~prgbT;<${&!KqvlSlkcxf>3VYhw%mxFaQ?%(onh(&)qn6b}$7h zF+--Kht^T&>y3ch1=1RG;pd7#^AiIufSg%98Z;CZ2zm*&MCgp{ODtKi9~BxeV-0b^ z1-qE!|K&a@3-LHA(<|~$Es_5fF@sJAkLpO6X0K`%N!R_R$Up8J@n9r!2x76uQo-MF+i6qWQzLK z2nsS-G8e|48rE?TE6!n)d=AJliDA(s)JPxH5Z^W99pH=Up3_qh7DhhDXNo5PyWY71 zsFy$Zl->Il)K%EVggoak|L-Ok_7LNrJv?oeHJBp&rjA-DXqJ;{9TSu_oqM22k|KgH zg9D(*nBb8dQa17vjeWP6ql=X<^V~pJtwdLtj*>qt2S*8Pm(@Neoq+P;M&r@H^|=d5 z^l43ra2V3lLW6k#R#dFljQHBqV0$s5|^4AdUKU*C&GNroDI7*O21=ViRz0 zKcpt3#K#T?eY6?D% z3b%Jr+zF{cY1ke(bN>IEIXveLFdh&b>$QP*((nlLxz*ivpHrbN8hI*1LG-gjua+96 zCtJP14kF9=rp;0=K};)l&?eSUJE_ReW&i$ID8g>gYQiNF`+urA_opPYIE=q27!sDD zA=*V$sts>>XOoh=Lntcdl4gPmlwp#ZkeQfS;9_cMmT9@Mp<8OH*_2skfO*NJgt4ow zT4`%HQMl)Gtr(V((<4Hzu9yRc<{FwLNkqZA5zMI8v?*zSV2!zr7-Flhc=y?Wj#Pm$Mr6h`J zT0heflUjVf2#hFC%ArhWY38kbRKm2Nf`A|uEZ*mG&)U1{nv}Nu!-7YL=*(JSW?p;C(e6Rzt$C;MCbXWYj@dLTt{>4nEO-9fu zMedUs)k9~|?92Nx^bL=X1-Qw1FZaGrK094juoArC$*TRHQ%nh;4-ziPkgUec9Q z_4}hj^Ebky;(c8oW0i_+n#NhKr2{6^HXFoIl_UuQ8;G&pgr7=^JT24szlz9*yYXTR zA&r5}g<2$Thx}mnh9vQeJgrzWh3aF3U42QjSp^C}gcM~5wn z_)ETDH-ZS9k8wT038fI?psUk5dngPlQAU+}b|!w~0tD5g&2 zdsEa-O?IeMZ02yA0U1tW@flZ~4=2U;qrkKzAKhu}wpec578azhKOUB!J$d{hO*leG z-MvT=!hy`w?T-RO#~z+8ijIYHDUMYbuct4#?UuK3t1&?y;O(D4p26vGwrCs(_!RAKcufUXG|z zblG))T){2;X2V=>HSN{?TA=*Y6%jtl3udRzrHpd=&}B|}xCFM@8+Nm6Do$u89-b|j zW}B~>GVbmW`I;F*K9z)v!K_Z#ETeMx6*C>d)mU5h)&_jJuQ#7C(L^8eh^y2Xv&{(| z064yYlFPIhNS+FFFJ#bgHG`LOQXOi=bs0f>_Yg_z!E+JpJKT%x%YH8G4s$Pf2lGi{ z)C+%|U_-GRz_@4jOhpLSWY@BLT3EL;dD};_zJB8>Z*W?zs~#X9o<^Rfp6m|G`NMa~ zc;XqL6OW?GFM;L{cITRB{n{3_lLsjBD8IsZ``&)M8cS$C(?*OPYqzt+Sik_Atz=1I z%N(s|S=G^Jw>LECPMcqLqXSG2>1)*ve2`HA5p47BuT-V~(1!pv!V)mR1>;CP$1n+e zKT+nD_`a;-HY281y-T;QXnSxY!<@QCX*AcrZL9mZNd^pXvcEA9o5hq|`x|jFG(w{_ zEY@T<&D_p9*lPrsb4}AM*sTqKWeYP2tY)56MJ0}XohXj_a?!-PGqafMZA`Jh>922o z+*40f#pSH66}gmC4qZsZwXZwQLdspYfCa34gff~*UchR1pjd=?4u)<3tt{?CO)|D; z-w8h-%K1^~Yg$4!J?tcwr*Sd`taLUY5C~j$?%tJ=#NxAE($cwA?};|xB7hte9(d88ng1^ZzM>HT literal 0 HcmV?d00001 diff --git a/source/media/icons/tasks.svg b/source/media/icons/tasks.svg new file mode 100644 index 0000000..18a7b41 --- /dev/null +++ b/source/media/icons/tasks.svg @@ -0,0 +1,57 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + + + + + + + + + diff --git a/source/templates/entry.html.tpl b/source/templates/entry.html.tpl index f725636..3881b9a 100644 --- a/source/templates/entry.html.tpl +++ b/source/templates/entry.html.tpl @@ -1,6 +1,6 @@
  • - - {{label}} + + {{img_alt}}
    {{label}}
    diff --git a/source/templates/main.html.tpl b/source/templates/main.html.tpl index 7f3d371..47b3ff9 100644 --- a/source/templates/main.html.tpl +++ b/source/templates/main.html.tpl @@ -10,7 +10,7 @@ -
    +
      {{entries}}
    diff --git a/tools/build b/tools/build index e9ccc04..c633537 100755 --- a/tools/build +++ b/tools/build @@ -16,4 +16,5 @@ if [ $# -ge 1 ] ; then path_data=$1 && shift ; else path_data="" ; fi mkdir --parents ${dir_build} cp --recursive ${dir_source}/* ${dir_build}/ test -z ${path_data} || cp ${path_data} ${dir_build}/data.json +echo "-- ${dir_build}"