From 76ba1858ff19ac4038480b3109e74cbaad39add6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 Oct 2019 15:31:07 +0100 Subject: [PATCH] Highlight calendar when a new event arrives --- img/icons/calendar_notify.png | Bin 0 -> 1379 bytes img/icons/hacker/calendar_notify.png | Bin 0 -> 1379 bytes img/icons/light/calendar_notify.png | Bin 0 -> 1379 bytes img/icons/light/person.png | Bin 6022 -> 6230 bytes img/icons/person.png | Bin 6022 -> 6230 bytes img/icons/purple/calendar_notify.png | Bin 0 -> 1380 bytes inbox.py | 6 ++++++ webinterface.py | 19 +++++++++++++++++-- 8 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 img/icons/calendar_notify.png create mode 100644 img/icons/hacker/calendar_notify.png create mode 100644 img/icons/light/calendar_notify.png create mode 100644 img/icons/purple/calendar_notify.png diff --git a/img/icons/calendar_notify.png b/img/icons/calendar_notify.png new file mode 100644 index 0000000000000000000000000000000000000000..606e06a6badbbd8d27a050c9298b1da3b4cdac02 GIT binary patch literal 1379 zcmV-p1)TbcP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHk{c@whTmC5mVhLLU^!f?vV$x?KXki&8Rt~Z zsXXMtO__^KOXB|k&$#jH=X5{tP?q3=T8cSFk0<1ixuBE$@f-_}_r@cPgowd_XIvt%~+#Je^%;@wpqtlV_VW)HKG9R51AC_}|<}F=2 zn%8kKh|v}PgdGnd@w?_Dk{}DoQkH$!%*&$a^R89wtA6g1?u~#~??pe~PP^RYI2_%U z6<>5Z?WFJZ+bTU~M0`c&$Bay`5MTA1JmZYdXr7wt z)|cGT_}6EF6%f=dbHW0PuZN4Obl+RDIg3|^slgxTg{+?rAQ56Kk|6;BAF;71k~d}} zf{qD%3NmL2TtR@;DR*SaK_miB;uRb3811>Ne3)^)0E9{u0~#D4zzRV_#Cc2DLdB_Q zP}QiWNwbzHF+`0qT3q*3F|lB3(ae%%D@jsFnqsn)Qcfjv7F=WMa?F-f&bbr>Eup|y z!TbV4LQQ-j&;=7QFBqKg@baUc-4MPOY{iXD?g41ac1Hmweb<)M|PVSG~9Mt_TH-1OXEp&f_oLlG~$bIGZhFUNC zx|I!RokD1e8&Yum>I_Qwt!$bx*RTHio%u%VzWc(*(Z|up(Z|up(Z|up(Le79f2+@) z@h{bHQ7bW4aY5HV0004mX+uL$Nkc;*aB^>EX>4Tx0C=2zkv&MmKpe$iTcuK}4tB8O zkfAzR5EXIMDionYs1;guFuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|;_9U6A|?JW zDYS_3;J6>}?mh0_0scmXsb<$WplX(pP9}tGZdC}rB7`vd5JgmCramW%DR_>rd-(Wz z7w1{t=l&eMO5S9EPavLUx?vG-5KnJfI_G`j2rEen@j3CBK^G)`h+~SXQNBOxvch?bvs$UK);;+P!+C9Gnd>x%k;EdFAVPqQ z8p^1^LY!8O6ccIMPk8u;9KT2|nOtQsax9<<6_Voz|AXJ%nuW;;Hz}L|x?gPjV+089 z0?oQ@e;?a+^8^Sy16NwxUu^(0pQP8@TI>ku-v%zO+nT%wT=+no7#Mzl$sr~{lMoyA{!mR0WCRdDdcI{x l&)FCPjOc~IC>RB}0017yS8i`OEB*ig002ovPDHLkV1kOBdB*?% literal 0 HcmV?d00001 diff --git a/img/icons/hacker/calendar_notify.png b/img/icons/hacker/calendar_notify.png new file mode 100644 index 0000000000000000000000000000000000000000..6d6aebefee77d14bb2c13811c54507ae0bcceed2 GIT binary patch literal 1379 zcmV-p1)TbcP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHvfCgGhTmC5mw+UMU^!f8x`QsiKiF|DO*?Zs zedt5X#9&31#Qy;~$BiG~r~8JBvIG~@Qp_=WTp@?d1%u>|>*&dceSa|R=O??nzF?RH zy&R8moc;xNy}w}LwAW|5vv$TwXQ1Tv8H0XSbOsVW>~uc6%*UX_hv}T3c`MhB z?)5ns#OR86!j6ZK_|nIgUWL zX~h?vPCMy){kBSv6%k*V`LQC?E5)z+&7S5Q$Lvao4sykFQn#t>5gaSzl>J&nGkg?d z+byFdUwi|#j;U7XD;_d2l${i)Q=v&?_l+7#3_RG-GdGrPOJbb4Z75+inrsdnx+L&u zASW>MRSWIBdF4a0gv_1b$%J5F`P|&A;cwehpgGqvC-Uji3U%>XH7H||TX%Q?2+dPd z-TIO{I{$htumXa*Wlor2@%0E%mF{axHfQnb;2Qj~Uy01_d$q8Jho@DU4}B6(vr zBIuaFr=W6{z!d~YopMK&97H1EBwo4kj?wmI<-?5Q1t3(S7|>v&09FVZBKBLt5-Ltb zgQ`X~O`5eti6Lr?(c(I%iirhNi)NNATS<~a(iD@WlyWMWv)~w0mt(e^a?Yh7X$b|f z3j7NUm8;ZHwZ>{S)m%%%@@b)Ii_KbUxs}dcI*tI>W4E4q?q$%xQW|0Ch{Hx2d6bE@ zHf4sXGftan=2X1;g41ac1Hmweb<)M|PVTqd9Mt_PH-1OXEp-2aoLlG~$o*C!}Ee)ftrVTiGEX>4Tx0C=2zkv&MmKpe$iQ$;CN2Rn!; zWT;LSL`5963Pq?8YK2xEOfLO`CJjl7i=*ILaPVWX>fqw6tAnc`2!4RLxH>7iNQwVT z3N2zhIPS;0dyl(!fKV?p&FUBjG~G5+iMW`_u8Li+2qBDK3`3BaWz0!Z629Z>9s$1I z#dwzgxj#pbnzI-X5Q%4*VcNtS#M7I$!FiuJ!ius=d`>)O(glehxvqHp#<}3Kz%wIe zIyFxmAr=d5th6yJni}yGaa7fG$`>*otDLtuYvn3y-jlyDoYPm9xlVHk2`pj>5=1Dd zqJ%PR#Aww?v5=zuxQ~C(^-JVZ$W;O(#{w$QAiI9>Klt6Pm7kpOlEQJI^TlyKMu4te zpiy(2?_(i| zqi@Or{kK49&FihXkJASrO4_R`5=+no7#Mzl$sr~{lMoyA{!mR0WCRdDdcI{x l&)FCPjOc~IC>RB}0017yS8i`OEB*ig002ovPDHLkV1n;Fa~1#q literal 0 HcmV?d00001 diff --git a/img/icons/light/calendar_notify.png b/img/icons/light/calendar_notify.png new file mode 100644 index 0000000000000000000000000000000000000000..606e06a6badbbd8d27a050c9298b1da3b4cdac02 GIT binary patch literal 1379 zcmV-p1)TbcP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHk{c@whTmC5mVhLLU^!f?vV$x?KXki&8Rt~Z zsXXMtO__^KOXB|k&$#jH=X5{tP?q3=T8cSFk0<1ixuBE$@f-_}_r@cPgowd_XIvt%~+#Je^%;@wpqtlV_VW)HKG9R51AC_}|<}F=2 zn%8kKh|v}PgdGnd@w?_Dk{}DoQkH$!%*&$a^R89wtA6g1?u~#~??pe~PP^RYI2_%U z6<>5Z?WFJZ+bTU~M0`c&$Bay`5MTA1JmZYdXr7wt z)|cGT_}6EF6%f=dbHW0PuZN4Obl+RDIg3|^slgxTg{+?rAQ56Kk|6;BAF;71k~d}} zf{qD%3NmL2TtR@;DR*SaK_miB;uRb3811>Ne3)^)0E9{u0~#D4zzRV_#Cc2DLdB_Q zP}QiWNwbzHF+`0qT3q*3F|lB3(ae%%D@jsFnqsn)Qcfjv7F=WMa?F-f&bbr>Eup|y z!TbV4LQQ-j&;=7QFBqKg@baUc-4MPOY{iXD?g41ac1Hmweb<)M|PVSG~9Mt_TH-1OXEp&f_oLlG~$bIGZhFUNC zx|I!RokD1e8&Yum>I_Qwt!$bx*RTHio%u%VzWc(*(Z|up(Z|up(Z|up(Le79f2+@) z@h{bHQ7bW4aY5HV0004mX+uL$Nkc;*aB^>EX>4Tx0C=2zkv&MmKpe$iTcuK}4tB8O zkfAzR5EXIMDionYs1;guFuC*#nlvOSE{=k0!NHHks)LKOt`4q(Aou~|;_9U6A|?JW zDYS_3;J6>}?mh0_0scmXsb<$WplX(pP9}tGZdC}rB7`vd5JgmCramW%DR_>rd-(Wz z7w1{t=l&eMO5S9EPavLUx?vG-5KnJfI_G`j2rEen@j3CBK^G)`h+~SXQNBOxvch?bvs$UK);;+P!+C9Gnd>x%k;EdFAVPqQ z8p^1^LY!8O6ccIMPk8u;9KT2|nOtQsax9<<6_Voz|AXJ%nuW;;Hz}L|x?gPjV+089 z0?oQ@e;?a+^8^Sy16NwxUu^(0pQP8@TI>ku-v%zO+nT%wT=+no7#Mzl$sr~{lMoyA{!mR0WCRdDdcI{x l&)FCPjOc~IC>RB}0017yS8i`OEB*ig002ovPDHLkV1kOBdB*?% literal 0 HcmV?d00001 diff --git a/img/icons/light/person.png b/img/icons/light/person.png index e97623f163e844a837e75c07683b8103d3c26907..d725b57adb4e7bf503f74c98e63493c3dbe46f14 100644 GIT binary patch delta 1304 zcmV+z1?T#PFV--SBmw4;B_MyY+$s!3{~1MwfFy)qI6O>MW{}}$gK78UbZ*tTm5+S1 zDH|+fN$dr<+a14t4)+5GWeF~*rI=&%I6@AY3mVCv$61pP>w22nen!uBcRgU31ht&E z@!0(f?0SE}!nW6EyR+?x({{8U+#Je`%xLtT(RL(!+G*dr%x9y-hv9$hbKHh#XZ3m? z3}SSJKVip*koa}wGm;<+$x^0$U74pv(Ppt_$zSzzmvnCgyjm~%`L^wHm*aGF8&-VL zY1>KP>$g;T%!v4k%#RtFULn5fH+mZ5I7e4PbdW3VLEVP3TIg6Ir>xf^is4kWZIz6Y zeDMv`I)+-Eueiy?PN0i z*svygGCZ{#-9)eLH|eh^>D}h6DtB#KfjZ-k6OD zIwtTb$ebl`1p!j0+>s>*kq9`6XKcJBvVJ zn3HP)8h`e)J2jZiZZ2qUCpwvd7zYAzn*`?OG@1ECA@C$Onfc7(M3j-GPB@(=F%S#~ zu@1V}-O2rtn}fRF<;L&Gxry#?kaH8=1G%r<-cajhZMU)j%~c3Zu|o=$UmZaS-^!*L zef@0D@60!9_uUshjy{e)jy{e)jy{e)j{bQ^_!F%@I{x&z-&3?PydsGROaK4?WRn&H zDSs=~y62c~2X7wyeu3DAO^*PXHyd=u<$-hHT(Kg?RHAs7!B6b;=5RZHJC*-l<7 zxDf>Ho7D>;5B9|uZ5h>T5C8xHglR)VP)S2WAaHVTW@&6?004NLeUUv#!$2IxUt6V8 zst$IL;*g;_S&%B?s8uLJg-|QB>R@u|7n8pOEr0yYDpSp#2|(2>Ba=!Bx%{dSd_@Rh z3?Pbx#7uoo6w~k=U-$6w^)Ak{ywCkP`jvvo0G~iS%XGsc-XNadv~M{K$3L1fGE_t>dpXftgRz8yzin1PpEi7uOw4 z-UBXofZ-=yG9*U|(DWCJ!220}Qyv()1ua5rZg1^MDH$92^2;CCXm+cz0iS zZ~vZY_xA&TOmeKB5*?WU01>pa7X{G*A~Y~FGh|^cH!(IiEi_>?I4xmeFk~$^HZ(P3 zW-~D}WMwmx3J8x2I5{vhGdVRjIXN}6qzDBBlL-r4Bse)@V`MilWi4biFflDOI5;>h zIASw6Ei+?gW@ce#VK`wmGqYI?rU@2#<1N$x000J1OjJbx001c0C}{OnwUZSVItUC7 O8xwnU!`ri07B2yldq?H~ delta 1264 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 O8xwnU!`ri07B2yldq?H~ delta 1264 zcmVoSWX?OhkIouCil!aYTOEJgjafKW*7j%+8ud^i|R(+bhv|Rp@3>9T&gS(# z7{urbf6#~zA@Qr`Gm;<+$x@~rH7q(E)H*0*MB4 z0yAH^(2AR9JOoRK+zBI@;0%nPi+eTv-}2;WjJeE-e7dwkUOd+q(wO9CjZpwXV{58Q zUvg*TU#|&PKv0*=2@@>7o-V4=eQn9&EM6Uk27m4svc4TaBE)}IBtrrMK9VR!^2TgL z&@q8eLFO!hD+rJ}<&G>lh(y3iJY(Y>qcxV5Pcx1efKZ8IK!XhgSRrVL*l!6-s5li3 zsv6ZaY1R@YhNv+{i}Rc+CKgOBnpv`JB}ocNQ%sgp%Bf_|f@4fwj@fd`IhTT!TWr=+%dK?o(s2a19=r9_b1w%SSV~7Y^oWNY>BvVJ zSd(i48h?(nJ2jZiZZ2pZCpwvd7zYAzn*^|+c{1~fLf}bmGV__m;jCh0sS{48Nel$T zL9Bx=c6V}rQ*!S;ws`Kyw#DQ=E{3?blLad}<9X z@aoS$P~U0YcVGB8`Z)SH`Z)SH`Z)SH`o|sNpAv_RpHsg9{WFqi45?XI0001GlNSRi ze}hi#b4=&Kn+N|N$zp^Q8o;jmDO)CDHSU4P7#`vev{nvodXu2DF)^er#q3Jmsf0Xq z-DF^&qc3u|7wQ#B6Rw480-@ z0TB$LOJUmWLS7zphGjhf?pA3ILt1PDF@S9;4|sRPrWq}N(n>3c&jreNztTy9F)6t6p!-eVjf38R{x^0~{OzBSp$y^Lcl7 zdvE`qY4-O63MX=Xsi5f>000o=vlj)?0wOmxV`61yEi`3fWi2!{VL2^1F=93?Wnp4t zW-%~kWMg77lL`or3otP`H!?LbGchwVv!n zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KJvfCgGh2L34mw+UM#B#8KneL#=?*Ti`&%N#R zcKXnVn27-yOX7S$lF)yAAK@D=Dw0A{^IUR{xKc@lD;ge;>!>NFb$>9e{*ygi4;Usv zEk`%^b9{we?=M(7?c1|G*nax))6x0h=1^v2Mx&h>osNVLJDvSd_-NGpFrD)=Zt2=l zz4ntqjHd7>9JmWfTz5Vq39^tPb=udRd0G^0Sr!rhs9(6G`$WL2^`c+gPrKaZI2_%k zm0xr^?WCXUw^Vw}i1>=kj~SU>AwKFinvc^shQY(ViRN<>) ze1&1-O}4b@mN(mcD_h;MeD<{Ko_E`QFMDm=q~Qn%EjMf4N~@hZmQqh$d+ye~mtF_f z+K`ckjy!DmD5GA~PO8t;UdjEQ8lBX5ftus&P7P+Wn+ux9iB4u9#)&}OCV_c4O=i(4 zC7$FavshSyh%&O&38&E{27;**>!6F>o!l?E1*rQ~Zu}X!Fwy-Ba$%x-Aor2mC)8S9 z$E_?ta~DEWoREU;*L(NMUdKM-P$WM)^E>K~>+sbV-j3dm-j3dm-j3dm-j4o%M*}|~ z3jR|41hhYstAt;RPXGV`glR)VP)S2WAaHVTW@&6?004NLeUUv#!$2IxUt6_Ost$G# z5y?=UEQpFYY88r5A=C=3I+$Gg1x*@~6cEJ1_- z8C8@}hJ_fd8Yw1Hv>*5I4?2F4Tr#;zVB}ap1u7)R5B>+gyEXHZ6K+yC4s^cQ_Qwbi z+yxpn+x|Yb?ZycZcm}StmcLR5WlN54hX`2A*`ukQ^yM)1S`+ z?`QN)S)l(G2(7ujHTQA)0Hmp_F6XfJ7kw9|{`K z1u#@RKo|IcF7N{?U=I`cGav%*;R4^$1nd|XY8V)PfXN{yK$8#~_5M&z4rBxnKYG4p mN6*<90*vT|!6+C7xBvhi$X9M}I4k}D0000 None: eventTime=datetime.datetime.strptime(tagDict['startTime'],"%Y-%m-%dT%H:%M:%S%z") eventYear=int(eventTime.strftime("%Y")) eventMonthNumber=int(eventTime.strftime("%m")) + eventDayOfMonth=int(eventTime.strftime("%d")) if not os.path.isdir(calendarPath+'/'+str(eventYear)): os.mkdir(calendarPath+'/'+str(eventYear)) @@ -1435,6 +1436,11 @@ def inboxUpdateCalendar(baseDir: str,handle: str,postJsonObject: {}) -> None: if calendarFile: calendarFile.write(postId+'\n') calendarFile.close() + calendarNotificationFilename=baseDir+'/accounts/'+handle+'/.newCalendar' + calendarNotificationFile=open(calendarFilename,'w') + if calendarNotificationFile: + calendarNotificationFile.write('/calendar?year='+str(eventYear)+'?month='+str(eventMonthNumber)+'?day='+str(eventDayOfMonth)) + calendarNotificationFile.close() def inboxAfterCapabilities(session,keyId: str,handle: str,messageJson: {}, \ baseDir: str,httpPrefix: str,sendThreads: [], \ diff --git a/webinterface.py b/webinterface.py index c9683525..4c6631d7 100644 --- a/webinterface.py +++ b/webinterface.py @@ -2100,9 +2100,19 @@ def htmlTimeline(translate: {},pageNumber: int, \ manuallyApproveFollowers: bool) -> str: """Show the timeline as html """ + accountDir=baseDir+'/accounts/'+nickname+'@'+domain + + # should the calendar icon be highlighted? + calendarImage='calendar.png' + calendarPath='/calendar' + calendarFile=accountDir+'/.newCalendar' + if os.path.isfile(calendarFile): + calendarImage='calendar_notify.png' + with open(calendarFile, 'r') as calfile: + calendarPath=calfile.read().replace('\n', '') + # should the DM button be highlighted? newDM=False - accountDir=baseDir+'/accounts/'+nickname+'@'+domain dmFile=accountDir+'/.newDM' if os.path.isfile(dmFile): newDM=True @@ -2201,7 +2211,7 @@ def htmlTimeline(translate: {},pageNumber: int, \ ' '+ \ moderationButtonStr+newPostButtonStr+ \ ' '+translate['Search and follow']+''+ \ - ' '+translate['Calendar']+''+ \ + ' '+translate['Calendar']+''+ \ ' '+translate['Refresh']+''+ \ followApprovals+ \ '' @@ -2876,6 +2886,11 @@ def htmlCalendarDay(translate: {}, \ monthName: str) -> str: """Show a day within the calendar """ + accountDir=baseDir+'/accounts/'+nickname+'@'+domain + calendarFile=accountDir+'/.newCalendar' + if os.path.isfile(calendarFile): + os.remove(calendarFile) + cssFilename=baseDir+'/epicyon-calendar.css' if os.path.isfile(baseDir+'/calendar.css'): cssFilename=baseDir+'/calendar.css'