From 3ae9cf04203df6924600c67f0cdf3dfead037455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20I=C3=9Fbr=C3=BCcker?= Date: Fri, 13 Sep 2024 23:19:47 +0200 Subject: [PATCH 01/12] Theme improvements (#822) * start converting * small fixes * reorganize theme files * cleanup search bar * increase spacing * small tweaks * fix select styles in Chrome * cleanup menus * improve button icons * restore badges * remove unused classes * restore some overrides * restore bookmark form * add summary outline * avoid layout shifts * restore bookmark details * increase border radius for modals * improve details modal * restore reader mode * restore settings * cleanup variables * start with dark theme * more dark theme... * more light theme... * more dark theme... * add postcss build * remove sass processor * update docker build * fix alt color * remove endless symbol * fix tests * update assets * remove sass files * fix docker build * cleanup spacing * improve theme * update test scripts * update CI workflow * fix test --- .dockerignore | 1 + .github/workflows/main.yaml | 3 +- .gitignore | 2 +- assets/logo-inset.afdesign | Bin 0 -> 35758 bytes bookmarks/static/linkding-screenshot.png | Bin 188183 -> 457962 bytes bookmarks/static/logo.png | Bin 1595 -> 2592 bytes bookmarks/styles/base.scss | 136 -- bookmarks/styles/bookmark-details.css | 150 ++ bookmarks/styles/bookmark-details.scss | 141 -- bookmarks/styles/bookmark-form.css | 48 + bookmarks/styles/bookmark-form.scss | 49 - bookmarks/styles/bookmark-page.css | 457 +++++ bookmarks/styles/bookmark-page.scss | 408 ---- bookmarks/styles/components.css | 60 + bookmarks/styles/layout.css | 39 + bookmarks/styles/markdown.css | 40 + bookmarks/styles/markdown.scss | 40 - .../{reader-mode.scss => reader-mode.css} | 0 .../{responsive.scss => responsive.css} | 26 +- .../styles/{settings.scss => settings.css} | 10 +- bookmarks/styles/spectre.scss | 204 -- bookmarks/styles/theme-dark.css | 143 ++ bookmarks/styles/theme-dark.scss | 66 - bookmarks/styles/theme-light.css | 30 + bookmarks/styles/theme-light.scss | 15 - bookmarks/styles/theme/LICENSE | 21 + bookmarks/styles/theme/_normalize.css | 446 ++++ bookmarks/styles/theme/animations.css | 38 + bookmarks/styles/theme/asian.css | 43 + bookmarks/styles/theme/autocomplete.css | 55 + bookmarks/styles/theme/badges.css | 64 + bookmarks/styles/theme/base.css | 61 + bookmarks/styles/theme/buttons.css | 257 +++ bookmarks/styles/theme/code.css | 30 + bookmarks/styles/theme/dropdowns.css | 36 + bookmarks/styles/theme/empty.css | 21 + bookmarks/styles/theme/forms.css | 515 +++++ bookmarks/styles/theme/menus.css | 89 + bookmarks/styles/theme/modals.css | 93 + bookmarks/styles/theme/pagination.css | 61 + bookmarks/styles/theme/tables.css | 26 + bookmarks/styles/theme/tabs.css | 75 + bookmarks/styles/theme/toasts.css | 35 + bookmarks/styles/theme/typography.css | 117 ++ bookmarks/styles/theme/utilities.css | 296 +++ bookmarks/styles/theme/variables.css | 135 ++ bookmarks/styles/variables-dark.scss | 32 - bookmarks/styles/variables-light.scss | 7 - .../templates/bookmarks/bookmark_list.html | 6 +- .../templates/bookmarks/bulk_edit/bar.html | 6 +- .../templates/bookmarks/bulk_edit/toggle.html | 10 +- .../templates/bookmarks/details/actions.html | 4 +- .../templates/bookmarks/details/assets.html | 4 +- bookmarks/templates/bookmarks/edit.html | 20 +- bookmarks/templates/bookmarks/form.html | 46 +- bookmarks/templates/bookmarks/layout.html | 10 +- bookmarks/templates/bookmarks/nav_menu.html | 149 +- bookmarks/templates/bookmarks/new.html | 18 +- bookmarks/templates/bookmarks/read.html | 14 +- bookmarks/templates/bookmarks/search.html | 4 +- bookmarks/templates/settings/general.html | 18 +- .../templates/settings/integrations.html | 8 +- bookmarks/templates/settings/nav.html | 2 +- bookmarks/tests/test_bookmark_new_view.py | 3 - .../tests/test_bookmarks_list_template.py | 4 +- bookmarks/tests/test_nav_menu.py | 4 +- bookmarks/views/partials/contexts.py | 6 +- docker/alpine.Dockerfile | 14 +- docker/default.Dockerfile | 14 +- docs/header.afdesign | Bin 25612 -> 24736 bytes docs/header.png | Bin 56295 -> 53852 bytes docs/header.svg | 6 +- docs/linkding-screenshot.png | Bin 382556 -> 457962 bytes package-lock.json | 1797 ++++++++++++++++- package.json | 10 +- postcss.config.js | 13 + requirements.dev.in | 2 - requirements.dev.txt | 14 +- requirements.in | 1 - requirements.txt | 2 - scripts/test-e2e.sh | 4 +- siteroot/settings/base.py | 14 +- siteroot/settings/dev.py | 2 - siteroot/settings/prod.py | 2 - 84 files changed, 5437 insertions(+), 1415 deletions(-) create mode 100644 assets/logo-inset.afdesign delete mode 100644 bookmarks/styles/base.scss create mode 100644 bookmarks/styles/bookmark-details.css delete mode 100644 bookmarks/styles/bookmark-details.scss create mode 100644 bookmarks/styles/bookmark-form.css delete mode 100644 bookmarks/styles/bookmark-form.scss create mode 100644 bookmarks/styles/bookmark-page.css delete mode 100644 bookmarks/styles/bookmark-page.scss create mode 100644 bookmarks/styles/components.css create mode 100644 bookmarks/styles/layout.css create mode 100644 bookmarks/styles/markdown.css delete mode 100644 bookmarks/styles/markdown.scss rename bookmarks/styles/{reader-mode.scss => reader-mode.css} (100%) rename bookmarks/styles/{responsive.scss => responsive.css} (80%) rename bookmarks/styles/{settings.scss => settings.css} (61%) delete mode 100644 bookmarks/styles/spectre.scss create mode 100644 bookmarks/styles/theme-dark.css delete mode 100644 bookmarks/styles/theme-dark.scss create mode 100644 bookmarks/styles/theme-light.css delete mode 100644 bookmarks/styles/theme-light.scss create mode 100644 bookmarks/styles/theme/LICENSE create mode 100644 bookmarks/styles/theme/_normalize.css create mode 100644 bookmarks/styles/theme/animations.css create mode 100644 bookmarks/styles/theme/asian.css create mode 100644 bookmarks/styles/theme/autocomplete.css create mode 100644 bookmarks/styles/theme/badges.css create mode 100644 bookmarks/styles/theme/base.css create mode 100644 bookmarks/styles/theme/buttons.css create mode 100644 bookmarks/styles/theme/code.css create mode 100644 bookmarks/styles/theme/dropdowns.css create mode 100644 bookmarks/styles/theme/empty.css create mode 100644 bookmarks/styles/theme/forms.css create mode 100644 bookmarks/styles/theme/menus.css create mode 100644 bookmarks/styles/theme/modals.css create mode 100644 bookmarks/styles/theme/pagination.css create mode 100644 bookmarks/styles/theme/tables.css create mode 100644 bookmarks/styles/theme/tabs.css create mode 100644 bookmarks/styles/theme/toasts.css create mode 100644 bookmarks/styles/theme/typography.css create mode 100644 bookmarks/styles/theme/utilities.css create mode 100644 bookmarks/styles/theme/variables.css delete mode 100644 bookmarks/styles/variables-dark.scss delete mode 100644 bookmarks/styles/variables-light.scss create mode 100644 postcss.config.js diff --git a/.dockerignore b/.dockerignore index c5f38eda..c04ec2f5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -10,6 +10,7 @@ !/manage.py !/package.json !/package-lock.json +!/postcss.config.js !/requirements.dev.txt !/requirements.txt !/rollup.config.mjs diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 4e6e5205..883c4dd5 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -53,7 +53,6 @@ jobs: - name: Run build run: | npm run build - python manage.py compilescss - python manage.py collectstatic --ignore=*.scss + python manage.py collectstatic - name: Run tests run: python manage.py test bookmarks.e2e --pattern="e2e_test_*.py" diff --git a/.gitignore b/.gitignore index a9663a7e..5850eb5d 100644 --- a/.gitignore +++ b/.gitignore @@ -183,7 +183,7 @@ typings/ ### Custom # Rollup compilation output /bookmarks/static/bundle.js* -# SASS compilation output +# CSS compilation output /bookmarks/static/theme-*.css* # Collected static files for deployment /static diff --git a/assets/logo-inset.afdesign b/assets/logo-inset.afdesign new file mode 100644 index 0000000000000000000000000000000000000000..10f0015b294b96d11cad86e4074a92cdfdab21e6 GIT binary patch literal 35758 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 Ut@bntY^ek(%B#wiJ~0XSKfpR83IG5A literal 0 HcmV?d00001 diff --git a/bookmarks/static/linkding-screenshot.png b/bookmarks/static/linkding-screenshot.png index 69931c02bf435c97ff6fff5f4aa3e8b0af8e4b4a..99cd0288127bd032bed448b27eeb3095c5e39c0a 100644 GIT binary patch literal 457962 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

~5<%CQi5l-W;OSfoP}1>q6>)E#v6l2> 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 z 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 z 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

AU6afN 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 KP`QAv-~R)z?k98r literal 188183 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

fARJa-kLKEhcl0PQ?tuQM6G)k33F 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 _R*{N7R#M$eXT z;>Y`?tV%Tpj`voIVI5U|;*gz2=?o0jRQ<3bH0E%U>Cek_>Fj^GlboI+!W>$(d(W?z z>Q#4}#a+hk!X2)ittx&x@i#4HY^-b=mr>CCq>3947_WU|;P#ZRpOGN+BgAt2sz?X!W4CT0BIBD$DpbXzC z^nEnWgR#nKJgqq!`}D~ZhR@u?t*t{0@`kpN^eE~pHO0j2=PQBuTQiy+5FpoB?jtEC z&}2pE?RPQJP00B~vJ#>@A%N z2O3e{WD$nHF5G&vWuS)kFlEqqmc#eZjz3ly6qg6hy;>JxtyQPkp2C9!H{I;G0pEnD zKQ})v5_2HRwql^)#<&2N^A3(mPxft#F#uEw+%{s96dlIn!n~oV3^|V4I%h?hM-m3N z6SeXOq0d_${_av~f_N0&Mcs>skqRW`a?iyZg^~m-Q~^Ob0ojY4k({&8WV*yJGy$e{nzes5Jb^bC8?Myw3_>t3TCL5@Z>H44#4Gy|jxuk4(aMXcB0}G*4?dLm@q7WQq zf&@XA4k1KphJdI1G=cw*t+x(qdwJr8>n+ma?w&w#D_$IeCb$=ODDKeWPJ!T7B)Ge4 zp~Z{4ySv*>Puuf5?|W~aJozKZcXxJnW>#kAGrtV{2PPPic_zke(2G!Pw zdgb@D9(}|JXUBRBG3jNtO;AM2tevGzt>K&RJKE2ut+%O?yfH2K?YJ>uqdiii(bH3z z-LD1I(|YV>Xi`MdNXMKc1yX3CSybe=3=G~G4wbwHC2gC*+rZSRMXG5+SQd_55M7Zy zGy`AA%%&%v;coRUO&Da@g(G7>7-egOeaMCJ$WkT~bFlJbPTl*!IQ)^d$Owpiy?GH< zwv)AU9IdHc!|({HpX$JZtDo7HQkFY6CcxlWPw$qB3e?8Ew%nC}Ti9=yrZN)Lyfdu` zb1~i0e)vJ+)tHr&o6j|YJYIctl=MBKKO&5NwoW+Mdstx09v=T>(hTV2znG;y$o2}r z`uWM4(8O+U=k|k5>V9Oz;Bc+>7=TJ^K~iy#f`1z{M-@Khlf{Vq+V5>x<+XG2P9W9O z&9fy6X=T*oMAJF|m5hhMaYqCpJ=?8`(u)O(#sqJG?4sDlh6j0aNZ^){dq3XrdaoD> zt4xf=&1J0{MG(Y2S9uvkhX-?B?p@JJX`}7xzY~*$Mk(t}aCWMQVx(N4FN~{$gHI4( zjDk_1vn#+_Oj#M}^TaYVlHuEQf2X{0Xm8>%$`k!bQ zRM@k*BF))7InS#QRH~I~e74bBl-FVfS&lX`S?J*4j8|dnJIeO`Wby_X-~(xBhB`1k zG41rC!P|99Km07gIdy|G78Q2Y@%7ZF0b1)nz`-=!s&Gkw$6Kck zsmrC4R`_IM@?oMgMl@^f_8D;r|0TjX8jhLV!|PwKQFS+j}}vE z^1&d_wdCSFAfuqday(yWx@z6@QrP6it`CFS>B{6s5-E9TW$$A|YM5ojaI&=|_zF zOkBy({GcIsi6iurydt>moEziwU?zbX6j#=Z1NRex^NF`;rSmxy$w8*EC(Xy!=KLV= z9--V@q*!TYAQ6nMQ7VRegNIcMO;+(|^YX?;WO(&t##+nee<@dFIy@P)X4pR`;o~#I z!E!vWO?r{Y{A zA_kD;*O(q$>u&q>wTP}3a#h7??$~QRoQ5#`PhGAE{xc!=NauGCRaE@jdp$)OM?)L3 zDaWYkJBV2wU+GBRo-0&Bl$mlc*)yPhf%6!A;>&Lq_(!#t<5??Jzlde<#kBb(`AISr zh>V~eryTb07fVBzuMiUs-xG~ZW;#Tk8^3rV6#M<>h*Nh#E#AT~_qkv>9INdgqp969 zXm`AdtTe!g24m~}Wh#rXV7axf7PkQu0m4FP)H$^tXOvN(GPK;!>!|LCT4&izf6dflptbt=qpdq6F?c2dg~x>tw8e zR%R`lxdlfn_ZY;Rg}F*!HCoJHW8Y+3$E?U6d@V^7&ed~lRt^qP&GJKSRF;DeUN!$^ zra1p4sl@R<_pbdNA<9V7_|Wl=xhBhKgcZ|8lJe;IdH-bsfT~E-W3|atAWL_I^fmW1 zo11(-7%iUb`BlIg>y&*5Ri?B+s3fZ|qzy;Ww54S_hW?JVL0Vsw~6q~Xa z81_3zriK*gV(C_NK6KeaHK!Xh{U2a5-sVbb&1J)G}ZxjP;jz_suxF&5bQ_CwD8#Q2Tb zsWN>rw>;s}SnsvMrpd$EC39FEPVZKMo?UJM9m&G@VeW$B0gS!jG<`Nc0>aBFy3)Db zq#8f1>%$N3h#227y!w_m7^Adlk13aIM2y*+_AS6&*ZtsewIyI=DX*DF!?*+V|-^fzc`4gG7Kb_Vc|S8Y2KIK1J(+f?N4K z0PIN1b@|wEZ&w&{UGN;s0oGX}#@*k^k;bLvt|qgvgaY`Jjr9oJLt^1|U9cg(u`aZ1 zjpC?8^ieTtiTfq-TgN%?$#T1Ol2>RjZe1RmHH?r-XN!d#R9?G>iu!3>F;nH1l%jGZb-WY^Nx}#Gd}#O4-#mDq0dZ$M0nz z&he?N`NEyBr5~d1M?ZY_8Gs6cc{eo9xZb*lDvPKzZv*OY=oi`Q|>a9D`eQ?8Xt8+pgkvR z1TC!~i2Y)BsJ^~d_S@oYGGi*Tp=j{3J-H%V=Z*2^>UPZ8^)#D|$b*ZV2hXvwd`g~N z{-B1HVRbg&!CFhv`VUZ34!tMRu)>yRR$jws=c-bmHcqH#-sws=3Cka~g@aaaa0Y0u$!_~t4LL3~t5qF$x#J|S<(WkS` zg_rXX)u<^?c6)#ACx7Mq(T6)oou`s{iG)0xhN$0^l9=E9V=yAWFym_!bD`vF;Sn5R z*3Aa@t+GA1Wy@&cv0y6frviAs%K#_wqFNAOHCfN(SiCWre{6_HiKy$KmL zs@&Q6{0+FLg^=f3WDxDnTH=@KK~cqmy&L-7@gsPS2Q;1P2^NQig}`DgPC$U(lOc9? zhXZk-_6`%}dDG3l&aShP0;G}+j|TtGGw-3^a&Vk<{&mzrWaQeTq&clJa0mhi7}`Gd z2dxU8WA$}_^LcNbx#igqg3{@ul0rxV0_FM3Fz&+Qt##_b8`@u8*vDhVRYxLFb zHXG(g0)v`$QDVRvY@8~ySan4M(dXL_TVbiy-QDstsV5sP^N#O3rJz3n`9m!l)YL+j z-;Io$oo**p&YO$x&aS6 z3^>iJX{x)r*q}ssPfPgno?`$hoPPyQYzoPW(Zn~aa4tq3-CnmaUO8(8m z*p6GVyF1VR$*IO&)tk!+? zik8{AsQp6ewI6OHy(GpoDmZ`m{s{ovf(eRxj`YO@1J>^MW^PRi)emG4!~wPE-83M* z(bV08WFvEFacK%zTIO2Bb1k=i(yxv2CQ zZpS=(F5Dv0T5N>FaID-fN0XYYCO~TG?@I`0yx<1`0=W5b@uHuJ$&1mug5!t)Cj>9fC0-*l#p=N16`bUP98_! zd*WasKyH8nnyH^`ZTCHL*sq;_z;~|(;oH4#=e3p11*bP(mTzMa7fh@v{@BDvaH%h3 zmu0EUh|{QyRgr$qrb`8H_Jf;5F15S6qLfi*tT^|yeh6ZiuSgY9@|yEriAM__-jG4$ zAUVh-E0dnG(o@AlpQuKm@4q2J$>|?vP?8-Ba$!) zF4WpZz2IPD3q|?eB|zsA$Yxj)WF04KH#9P~+)t%iDKdFeV?9O%>V76PJpu-G3K{5F z7ZATPEn@vIGw_e#%l-iIagtB$FgUoN)*62Qpm?%;C_k$!EF}flOiXk&IhfD?o*4`* zAcW|GBIn3WOV-*l-B({KEtN0+%~L@kC@Wa?P*t+~0Ton~4Ks zQ7u+Mvzr3!Vk{J*34VZ!u@JlK|F4~7VY1I0ag;+XO`Wkf)s}W4-oEgYg+9XI#t*2< zkY>Uc*rkZ1KT<)V5tMwNPUbxV@bBJLx&xm$~E?u}!SlnesE zENxk;0l~Oei$0{!Gfz&!0q4mABm@xy1H12>WM_8!lLQe{Jqx_J%AAYLpvyUozWj=?6!$-c?{q06uMpO-AYc|o);3dIDYU-c1FvR1qa_3#jgD@C|C}ld5CDLFtsEPZa>r+ z%}>gB)fw#lby*1Wnc&Avq&B}-!!b#T*n4r38v4`J*0B3ewYNvu(D7T z&3DM%20!#D>6=l6B@UA7Sh-mHrPot#QemAZ3elcudReu)M}F!t*a`|(*^p3qm*l}2 zEaH)nFo(gHx@?KjxMwQO2b|7eHq2#x~=SheK$oZI(phzfr z`;sUA#jNvL#v?C$SACXDe2S%p=idXl4YglM0zKBX&wUc~s?>B2s?oBkyj{WZG6`5=-l%=k&yF}eTYw;%Q zPlsgDL*&2+j8rpSUYgy?R>dKVHZ@E&N05PZj}{{cRu0MD}NJpQ~QUL@Q*A^IOIO$pXP)lKxhv{ z%6ZRerer;S6o0m&e+y9g%ZTgCS1V^1-F7Q0@A#7O2s#{>cjmP@frd5>p&@S+zUqHF zIjbr-u`8y-{!Tsv!haT3w2Rznd^sk~>mVKUFlRO-OaDxHiLpEIG#=x{b?C4 z68~NK@)clg$BAVNX+!}Ryy##9MB7m7vdvt=6C`3#p)E|I=ejdHUG8IZzI2IdE5q+_~`Po2IPxir2m^Is>e5)GTXf_YzmCEYAnSns`m1COo{I>Y0YG z%DzklW=Ow4(L4-uR(!VY6G>1}Z?&;AN86IfhC4QTpo;innK&-r2h?TI#xV^~xT%BF zLGeXO@>HBoz}8?ttej?R`m-9RHzMYILpc8I@Z{+7ZmS<`v!YN7paC4h-H1 zF}=hA1rv{Xyqh{^Z+fS!w%SwtaFyF^dX=xz(2bs6X61-IlsoY=Dv5vzAD-Tnp{S4M zdlZnGjAe@^eN~zn)lvn6Mf?mE$+6Kf@7r^{5!)36ZP-0m+vAo}S$%%E)n0kl{qV3J z;IrdB7$CazG~Vap`Nqi8R6dJAkMkoeZiH%2)8FEI6hFqTvuE?OMqa{WO%{@?iJpwM zXN!`{`L>eGu~4BFw&H7~LV{6Iqe92HbcM#b8}1PX>{d=E{>Fp+3ZYiYtUk$WFl9L1 z(~*_73$+YdbIk6n?av4J{xHlAT;@sD!lpsonwlIhPXRU6#dCQ_(afPKK7QL`Z`c zimD*N?ZeJt2q6S8tzo?Y2LjV+G3$CNoA?3+sW4fD_O{x)FKWtw)N~8=QqQ;26Dazv zUTiMyZoKm2MeoKamp2IO#jP9HGa{6y^Bnh;%qC)p&WE_@_Wj@6T%nMxmw-JbpFp{o z{IR9`s_r2BS6G2Fu^rJEYmEq(4K+Er!}gszUlKxVpY-}FV-DUQZbYP-WYRgh=Y>W_ z_JE7y>@ig;L%ForVoYatDTd8=YJRHQG6tIbS(zpPA-C$$da) zz!&zkX;icxt7Fl`0Yj`M)wzr+D>FKQPAmh_(Vl+qjm*ltcQfmBA~RnF^}sNjPD$NX z3l#MtYjWL0ElK_PYAWVJ-$+js=N8M!WJ7uys@SKp1k3Rx-$Dz>n@v}WvLhvciD8Mj z*V;WI$j;jjE!oet`SLP~G+)1Y1FyRfLzbH2ADh|jzIFw4Gw#C|MfG3OF#&pi(AU+q zUPCFZ#{5Q&3g2=t`Eh^{CDTzU$Xeb%9hY?BXIj@yu*Qq+CH{QK|CYR>#*Wp_&TiFh z!_By4K)1MQWQ2bFb-CoWUZ-C^TP);Ko*S>rbr*O&;%r#TIE70@4)ZM)*1qG;Q|B{h zXmA@~EZ_D2WASS74spo8Z0qF315jsR$-Mpz)(e%#eh|bq`<*u7yuI;_1sa_eRoP<^ zoUCz-q`vrZ;`R~_Q&QMRG{*JLZ{9_*54cR78VD%leBVN2R`iwW6!FPcL1fL4Ih~_- zNL7(sEgxH2mJY^RAN8CcGL#GsY@#v9?RvFTv@C=LEiSW%@znGYsD~gW=o;2{Ob#G& zIKPj)9ZJrWpjbqE`H>XHq*VA=Df>h|(Fp59xCj~Am1!zsI8h46Vy7E3=caR#koo85 znnYCfp)#>+!PsI~c#g)5?3G-t;ghBr!xfpCrmm>|w*1~%qehqzZ0l``&~A1ZCZqb; z3q+fY=$EB^8GJ=;^X>j2=xy>+@Wh2S$|bbsPu|`$&d%m|y-j4)RJK-DoZUWp1f)W0Q6ckO^1jCpK4>9U(a}cPvES z^;M}d3W-ohWjZ&bO=<8G>7r8V{x2xZe2bsauiRX==x0h1r!|H=R$ip^K)!#A2x`{Y zL}MI@ck}o*gvxJ1BFLE-13@))?>`|~Xuv=0wUsc}{-H{+_%)>8s#M8{>6KP|41_5i zKkMuZ!s@f?!_Fg{{s&Ys4L*G=AdKjgTn+^#ha2RS6{e&lTIA}YTQ8cft*rzStgsI@ zv$3`ef&JpfIXuh4nW@d>lhYpBqz6VsK0R6gK!ijf6#ehI=KJx6Y^r^7f0ub32?k}} zojd;;h(Ap|+XDPj#S{xcK4AF%?!dy&gdW?m<_!pG?$hAac@q22mRzM?Y-yx)*EpHM zu$oe;_x2x^%^O0P{U5uMkkRWakaGH2pff-u^Pzh3sYq*Ii5r>66L`J#lnLY?X%GqY zt0_>w$f12r*fEbt5)FO<}V&^u0ewF=taWH!u0g{@sNFks>YAlS3dEO-KRs_6&@ye++yq7 zn2;ZOh0qYSKsk_2MR*Dy<~1v~ebmUvo4azX?U&nAoq{4bHi{o@133wsB4>|L(KE#B z7+5+RmsVc~9csGF^N2ma#@FgJ^mxn2nyyr87Bd`wNF}p)YlhX3q-%in4i*>(JV`d# z@O7h*CYDFeD+ATlft0GzUa<>1r&4v>j(BPS8a|`G5bmCK(zX@5yWy;Lq9JgVCSK&5 zDvU-}0di@X(V=G7%UP4(o%X2sw=uvXfcl0iXml5D7o*|8svaD6Ux-0`F9__G5}PWSg!T#lVq zty0!utvOSL%?4DkoV1@|xoK}|icAdYQEc#goM}5pVrZ#m7$LCL=i^Dl!-_z3;?A9n z22kDtL5EVXM)<5fWVLFuY3NAF2lQC+H+Tjd+-il!!EXel{?5Hw9+<$R1r?cNjMAfM zx!Es<@NTaiq!C}1D)y`&mGRKj?@-mec^9AM2ifsh;>t<`*);KwuN-$5^cQfc>-Py$uoRf!WPo_ep)Sa)>|T0-s{=jqI>= zU|Gz)TTp3<){ z3#4ib&4FxRbiI#(h_@Sr-VUGA(LR^|148oX(HFAEDrsXa8af3bH&q~;+$xSSFO3bg zMA-_;YXcXT=99677;5>j<^Yh(`CZb4P0zbi(S4AO8rQ~8_xZWAh7!4R z#wi}RaX1 z&$*uBGJL1)RE7OpW1}k`y*YbA{AkpDpsH3QAJgy$S*$vO6)mN@fp-R~tL*ntL70Rn z>Q9v%MBl<@&{F25QH?=(KBY!TfJiX?8-A516D1;JSWdBIBVWD?c&++=kftE`nLEx9 zlktScuPOsPDWLpjVj!Sminpzckj9d$0CGH*mFjYYA>K|;YZ{3|$3)g=0BdbdCEBj( zrChUJlk+0tz;H9(m?MP9mKv1$!^iSXbyg`gb{({J%}@+^C*a1fjI8zGl!`_=38scrmTjPrSG?Yhl&)3_@o0!ce)0shn z{&kIvb}C9K7>W=l{SYTAFpVqs^Hi$q)p1d0?)9)D$RqZ$<O?|`_XQ4zp5k2B@v+%T=t(*Ud$Pq#p#<|Xi6Z=S@#q56o;57pBP`92`2%0 zR-Y_ML?U@HRSw;|P$1^3w+3ET4$M*cKEf-f9BdSAE z6h&tfj>vj0rU^u06dL@AQr-gepT~In zod>m`aPSwt3C?MpsGK7S+8U)2+UHD;_8``eGl%xpo`jt0bD1V|!wXsNh)Ia&+KXy0t)gqdnY3n&A-X#ZC7mxk({+=h12=l z*UtoT@8huVkq8Km0#pk~u|Gq-QNIAjO$R7tpzf*?iI~8_m%edpT|DCr3JQ%V8qcD7 z_jY%+nGgCy^%is&zn#js!;iLczJz|%z~?VcT>54nJz0D8!of@S9r4^+1Pt?Qf=fy_ zKoV<6NDav>3+?5DqZ(#e#~0r(?+!nR`nIw|NNIgkAFQQ-pL$?CU2Wsr!*o<;$@yCo z*L9y2>^byD?(11?r%kA1rY^(ar9S>!Ph?a`GpX>oXu?>rPZW;`>(~YPc>415Tadjr z%O`cxS$gc?F)^TM*-%dZ_5EJVvk(w~RR?->4=bqN@o?dLYiX400 zCL%IS{j|n)l(5`0iP>%3V@or2wnOK4ir{yG10xePlc_+MiQsTdOT2VFFK2vwxXTwv z@s8}N5?BNd2S#P=XH5^o{cl09Y=kDFL8Jo_EYs9d4aj&$<#hutlhH)6UM-C4=B83Ov1kNvGkd5jotB} z$&KNgLGP@bv!mF~?n@9gLW!IDYBUr`EMVJwxl7Yh20iYczhk3$?Q28m^?<{e+IYjE zuGk8Rd9RDvTR9vHX~h(}XM6mlP=n<}IvLRM2>97k;3S#lOTX1*@4W=}Z!drvrJJ~v z>Tr3=YTCjYy;vyLFUQaCpGv}cQo1;o!yS`7RZ6z#UoRivyDpe8DgU}Y{{4?e?(&VE zU{{SICeS}$23T?=CHV|}TxIzO-0#zCsH;}fUWEZo`9}4;6SvcXk^8SYDQ&5KOVT(i zrD2gPDXYEp7T;&wax)Ls$*bw6*^nLjD8$1*?T74V?&qod*r)0IqUO_X5+k->zyLvJ z;Z8dn9_p_P*->Wt-9(>AhF-_9^sRehF}z1|iWYdVA52!a^1a*YG+c+bi}o&fbNBD* zWwLecbvqdyV#>d#d$_=FVYUjOSOezu;yQG%tAxsLrcgs^9vWLbnT&}4c)vt|-@9$@ zOmtOL@@}<=5@in};Wa+M!R{WSMK0@~*OG6EV5c%t1E~HL&LOdTJ&}8SSNf(uP^f8T zNCxxGMS
+
{% markdown bookmark_item.notes %}
{% endif %} -
+
{% if bookmark_item.display_date %} {% if bookmark_item.web_archive_snapshot_url %} - {{ bookmark_item.display_date }} ∞ + {{ bookmark_item.display_date }} {% else %} {{ bookmark_item.display_date }} diff --git a/bookmarks/templates/bookmarks/bulk_edit/bar.html b/bookmarks/templates/bookmarks/bulk_edit/bar.html index 65837d77..847b9989 100644 --- a/bookmarks/templates/bookmarks/bulk_edit/bar.html +++ b/bookmarks/templates/bookmarks/bulk_edit/bar.html @@ -1,7 +1,7 @@ {% load shared %} {% htmlmin %}
-
+
- +
- +
diff --git a/bookmarks/templates/settings/integrations.html b/bookmarks/templates/settings/integrations.html index 3ac1982e..55bc8365 100644 --- a/bookmarks/templates/settings/integrations.html +++ b/bookmarks/templates/settings/integrations.html @@ -35,10 +35,8 @@

Bookmarklet

REST API

The following token can be used to authenticate 3rd-party applications against the REST API:

-
-
- -
+
+

@@ -57,7 +55,7 @@

RSS Feeds

  • All bookmarks
  • Unread bookmarks
  • Shared bookmarks
  • -
  • Public shared bookmarks
    The public shared feed does not contain an authentication token and can be shared with other people. Only shows shared bookmarks from users who have explicitly enabled public sharing. +
  • Public shared bookmarks
    The public shared feed does not contain an authentication token and can be shared with other people. Only shows shared bookmarks from users who have explicitly enabled public sharing.
  • diff --git a/bookmarks/templates/settings/nav.html b/bookmarks/templates/settings/nav.html index 29560192..e111832d 100644 --- a/bookmarks/templates/settings/nav.html +++ b/bookmarks/templates/settings/nav.html @@ -10,7 +10,7 @@ Integrations {% if request.user.is_superuser %} -

  • +
  • Admin diff --git a/bookmarks/tests/test_bookmark_new_view.py b/bookmarks/tests/test_bookmark_new_view.py index 7980bcaa..02c76ce2 100644 --- a/bookmarks/tests/test_bookmark_new_view.py +++ b/bookmarks/tests/test_bookmark_new_view.py @@ -115,9 +115,6 @@ def test_should_prefill_notes_from_url_parameter(self): -
    - Additional notes, supports Markdown. -
    """, html, diff --git a/bookmarks/tests/test_bookmarks_list_template.py b/bookmarks/tests/test_bookmarks_list_template.py index c6c4d756..86d1c7e6 100644 --- a/bookmarks/tests/test_bookmarks_list_template.py +++ b/bookmarks/tests/test_bookmarks_list_template.py @@ -44,7 +44,7 @@ def assertWebArchiveLink( f"""
    - {label_content} ∞ + {label_content} | """, @@ -203,7 +203,7 @@ def assertBookmarkURLHidden( def assertNotes(self, html: str, notes_html: str, count=1): self.assertInHTML( f""" -
    +
    {notes_html}
    diff --git a/bookmarks/tests/test_nav_menu.py b/bookmarks/tests/test_nav_menu.py index b5813255..e6ce5d67 100644 --- a/bookmarks/tests/test_nav_menu.py +++ b/bookmarks/tests/test_nav_menu.py @@ -18,7 +18,7 @@ def test_should_respect_share_profile_setting(self): self.assertInHTML( f""" - Shared + Shared """, html, count=0, @@ -31,7 +31,7 @@ def test_should_respect_share_profile_setting(self): self.assertInHTML( f""" - Shared + Shared """, html, count=2, diff --git a/bookmarks/views/partials/contexts.py b/bookmarks/views/partials/contexts.py index 6adcaeaf..701f597b 100644 --- a/bookmarks/views/partials/contexts.py +++ b/bookmarks/views/partials/contexts.py @@ -383,13 +383,13 @@ def __init__(self, asset: BookmarkAsset): icon_classes = [] text_classes = [] if asset.status == BookmarkAsset.STATUS_PENDING: - icon_classes.append("text-gray") - text_classes.append("text-gray") + icon_classes.append("text-tertiary") + text_classes.append("text-tertiary") elif asset.status == BookmarkAsset.STATUS_FAILURE: icon_classes.append("text-error") text_classes.append("text-error") else: - icon_classes.append("text-primary") + icon_classes.append("icon-color") self.icon_classes = " ".join(icon_classes) self.text_classes = " ".join(text_classes) diff --git a/docker/alpine.Dockerfile b/docker/alpine.Dockerfile index c782c7c0..eeb214bd 100644 --- a/docker/alpine.Dockerfile +++ b/docker/alpine.Dockerfile @@ -1,10 +1,11 @@ FROM node:18-alpine AS node-build WORKDIR /etc/linkding # install build dependencies -COPY rollup.config.mjs package.json package-lock.json ./ +COPY rollup.config.mjs postcss.config.js package.json package-lock.json ./ RUN npm ci # copy files needed for JS build COPY bookmarks/frontend ./bookmarks/frontend +COPY bookmarks/styles ./bookmarks/styles # run build RUN npm run build @@ -23,18 +24,15 @@ WORKDIR /etc/linkding FROM python-base AS python-build # install build dependencies COPY requirements.txt requirements.txt -COPY requirements.dev.txt requirements.dev.txt -# remove playwright from requirements as there is not always a distro and it's not needed for the build -RUN sed -i '/playwright/d' requirements.dev.txt -RUN pip install -U pip && pip install -r requirements.txt -r requirements.dev.txt +RUN pip install -U pip && pip install -r requirements.txt # copy files needed for Django build COPY . . COPY --from=node-build /etc/linkding . +# remove style sources +RUN rm -rf bookmarks/styles # run Django part of the build RUN mkdir data && \ - python manage.py compilescss && \ - python manage.py collectstatic --ignore=*.scss && \ - python manage.py compilescss --delete-files + python manage.py collectstatic FROM python-base AS prod-deps diff --git a/docker/default.Dockerfile b/docker/default.Dockerfile index cacdb3b0..409febc5 100644 --- a/docker/default.Dockerfile +++ b/docker/default.Dockerfile @@ -1,10 +1,11 @@ FROM node:18-alpine AS node-build WORKDIR /etc/linkding # install build dependencies -COPY rollup.config.mjs package.json package-lock.json ./ +COPY rollup.config.mjs postcss.config.js package.json package-lock.json ./ RUN npm ci # copy files needed for JS build COPY bookmarks/frontend ./bookmarks/frontend +COPY bookmarks/styles ./bookmarks/styles # run build RUN npm run build @@ -25,18 +26,15 @@ WORKDIR /etc/linkding FROM python-base AS python-build # install build dependencies COPY requirements.txt requirements.txt -COPY requirements.dev.txt requirements.dev.txt -# remove playwright from requirements as there is not always a distro and it's not needed for the build -RUN sed -i '/playwright/d' requirements.dev.txt -RUN pip install -U pip && pip install -r requirements.txt -r requirements.dev.txt +RUN pip install -U pip && pip install -r requirements.txt # copy files needed for Django build COPY . . COPY --from=node-build /etc/linkding . +# remove style sources +RUN rm -rf bookmarks/styles # run Django part of the build RUN mkdir data && \ - python manage.py compilescss && \ - python manage.py collectstatic --ignore=*.scss && \ - python manage.py compilescss --delete-files + python manage.py collectstatic FROM python-base AS prod-deps diff --git a/docs/header.afdesign b/docs/header.afdesign index b3de3609ab2f16a244bc2a1def0220cc9f91acef..cd74168a999fd7ae4ec71d631f12e36e782fa1e5 100644 GIT binary patch literal 24736 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 literal 25612 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 z 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 T^lI@x;SWi1S+Szmx}W|Bz}Isv literal 56295 zcmeEtbySpJ*C;0bj6nrNX#qhcrDsT`rMp3zp11hPg@8Hn zQT^H%2L3+%nwg677l^$%AC;Q49Ho%8oe?Dm69*Fu75`OAUOPi$n1ZnA*~{RGkIK~E z-Ui0Z?C9voI=vN8e)MufAKy`B@J6@vP7i{E<)8zBtr;5PPf zYb(mrJ@xdhk@kF4RA8O*Y;!|{zkAyt?JR!nY-qr2WMO1!WMz+Fe!}#G`QPDD@*m*#aO3|0{B-5NfZLc_+gl?{t!@4y^&dz4UH&gG0&@TNuQ=)1 z{CB|8(*I|0OUwVb2Ety%0TAwt3IBo9p92s|&NfEO3PuQPq@970hy$P=^)JGm(gh|5 zcQUe26NUq#A^i@RP0e$kXRUvB&Ydb|Chemu4S1RVV|QMFowPJe9FDNJwsZcs0~L*I|MS3KI!HhbB!rIv0QP0lksR~7kEkA$YTP?f7IRD~@#-LTud&i~yS(flu+*RVzKPTX>vDT0 zICgQ-N10H>EZI1ycirZ(sX0f6XQt(M@|@Gw{PCqcx=vEB5_8iS=B@0ijx|2vftjq_ z7mj!?GgXKw+>5;?|InA<>VpgCpm)VD zpKlTrMAe5nY5AbTgr7a92^FT=Dh?JG&tMKNFyxdpF8pfox#jh3)r# zIG#0k2?)cj&oKrWH7)tLR{fJFw(WvXF8ggs!l}xKvzEc7h?<2sCHOW%J+i!NR7=B{ ziJ2=R0&LVKB0{@*=}dtGi^a(r-CoveRnqBbl4OnHk0_E@rw5>??`?hVuqCc^EOc11 zS{O!7oD8odE!(QSo6?d_}9JX{Ou}#ZJ&F?di17`sB>s$=I74d z6DhHi<88Kmo|w_aGvW%4h?8~R6bUM^^kd3`>sD7(cZJ>LgV1Idqt>{Y2TRGf_#l*%dDjDA9yLJW}2&4QqKI|kdot{ejok@A$h(-Kp zf2h6o3-o7I%dT_5a~G2xH#0~GPbpMp`%4lmHv!QWPZJ`@Mmr5=33zg7J4kiv-xkRA2M>_ zRd8YpS`cKAqX-p@Y`d?iJ@5G;wXt|gnF95G~3_M>@}#G2tD!;kBKSR@AST{l$C!#Um7pI39$ zkNl$gcl{@ayNgv{y*4(kUHL;u)Q8?zUgq}oX|mSZHQCyml#L3U(R!W5dtTO!j@%y- zP0r5!1W$&LrdRXrjaMF*BhDAJ8eDiycqi(mgXUCy#0>HEM6o}B%E=Hn>c~+369#T~ z7xQS{JABuE`s-9@*VZJJS?fm6KRu(3>8*?l2NuHw&RetLr*esV4zl|CTCBi{h@OOx z`X=QWSkc?wb4^RqRcjh8tf*PfIrW@(U%3dh9NlZ$8s4d#0d3z$8Wx)>MRN2A9C(#D z#dx2yPfGrNxS>lB=kY4!0`D1^crwbO#6jArnLsy$>%Pm)NvFd}-0hQ{gW&b6+l6PG zC?LzACb@LJNmX}^QHS6*-xZr@*(!C6rFV4L9!>xa{A2!Y#mR<5=5mu2P{ypxW`{s;m+!IEIK?STEy2l#BdGXSJsoN{K*r@ih z_HZ=WSY}Spf%R@Oz{;kl?JaG{y!_c#$@em-*>cp$;@C6F+nB)xZf3|*jA(l>GUl;> zr{7S5#6d7tX@=CQHJ27N#U)|9^QN!Itjea_gZ-H7{!Kgr$&*nZ6f{Yqe@ZE8Yin&% zdX~g^yxM4=AmoXSQ9d&nhLj3o@8k#;lFBWutHz_mf8MwRNd)|isC+I1?PL0TNwN>U zLH`U3HTmF2*X#%5H@>QSayMDiim_^{;XLObezN|PA+)pI-+=btV&|jD~b>d+0r-pqB2`*K)VxW~9+e~O>TUt+;a3IqIPP@;m0Cf;ZFN(K?$fhvhKAExs$CtOvB?PYOqTrD(fA(Esbh zeJ&YtG*rT|-^*<+>Br!5lM+A1A?j$gHf)Y4kmn4jnhH7JnznJCS=KVhsK#8-`w`QV zqYd5JYFEv_;xOqH2(t(3rW4)I>Im^h;E;6yHQ!q8rig3lBKy6O=W!rx^FFb1Tx@5N znNj8ZQ_l~;UDQ@pn*u$*?Ddz?q}LR@A-hNG_yMkt76HEG7aQGFbwhTtbcsm(6ESB< z+4PE&X{hQ_cr42Y3`F1LyAsIQ4jZxEnP|4)v|2p_+I-cU04L!RZQx(9#CrgcHH?U> z&OSMIbk+-!_)AYj-9)BNb!<`IilP6f{Q+1aNvv# zLR3goN!CZw&I!&_uRj5XEgP^u_bAWW1ZL-7TiGN-ZUh+_b$dibFhBs4zc}8#-iA-5$&OCRobGUj-gn0AH$SiMiK8b^#7 zD|$rba+5SHkt(F8N%kt_$I88&LIG2JzB4TfTv7X?9L*q!-@uiljem#l3hKFSK77}U zP{>kqWueP5R8{#?t==a8+*$s<1nFJy(s{+#Wsztz-h^3SbD)Ch%DyF2EFw+-b z@Luost6{FW;uCjf{Tg)`#xlj^lZn#UnRQx&)A^UNq!|JVJT`Ybj?&=ucDHGNZ%ui5 zspK&bh+;V7hQJLV%3>+$^E|QCVB4imGc#PsGx_AT4)z@Nwg&q%WN;XUGiQ#}kD(NH zZu$HKgpuzAoL*qW7luNHUwMTX8I7u8f7{#N@ao=#nj8$;#8Jl{If-ds(!&g-^$=vbg0zo7%Q)pDgP8KaXzXgU4j&Wp{yKgC6MDNwH$LMp5oeK>em zmgOVCUvLq%Ea^N^)x#z_UY|FoG*_1o%GiGh6T7zIWfsln<%bAY|{EX4E?gw5lwz?VUGH6w}#@VaSv1Z{Kn-jgdiKI)%5_f zkx$>=KBi|(5=AObJzJ1d#Q(@zpY-jm4F8ZVwp#hI)|D?i)!R{yQ_nbLK3A?*Bt~03 zR+)N+Q#9SeEOfFbn{<_EacqR&P~3!&DHPJz=So7X|5$5Y_aqaxrR05;=sXT(J%fwq z2f_e)S^m`o#Qe84Bt#h<(Y#7=ds+jrl+M^bT_%5NcKQ}7z9SZY^T`j(V`=F&;(V&`16}Yb7tQDj+ zFe>p{877Qge+`tMyFdw(p1J7R9@L%WjZ{O5Sdj}T?xME0XUgcRgRYG9o=Nh;w*m{X ztCxcTBa!Zc>f!T0!5h`y$Uzn$ol2+v-L3E&{+WUXl4mzLd^A*uVyVe!IyJf|O6geY zx5I0ecl_=%cYKVuwuAXYyt|CqKmzOabW@G0m*GZRY!9u=S+qjQ7Ab-k2px~>s<6^l z16aQPMx}^ER=~ubXF7Z!o`qZvUa0hS06CIvetA)^l8O}*BS%D7%JG1bf?0_gB$C5W z-B&dDm~#jdLb5o$wY64J;pDD8ij82~TJ;9DWC6t9%^40L9Qpl;eAnCcL?y?}1FMaq z8mRd844fvSjA3^`g|6~t*JaX+`nL`a%PSeeW|a;y(uQ5PN*osSp;F!41R)a5w#0~- zhUVuj@HF?reTu6OmKJ~9I6ZPVZY+OgB&o~vU2=e-g3JCwsu)`74pFr5pD@~xKtT-G zru@f=bBX$|TRv0Vvf%)?+*$3{>mv;KV2{h1;;`I7k``y2l`S=(o74ke9_Z-Li)Y*t zQ&%am_RG;4s?m3@R6VJzE8d$;Lpys5DCu#U%yR0SvD+mOCZj}?_`$WC1Y*)?=a8yU zj!3r0T9IXL41?I7F4mC5NvGYjkQ6?)wInA+D^wd|c_dSEw7#9F&129KQJSYVzG_$B z7oVJDF>=R!D=d6sTpdIJzqhAEfbHKWiigBo=VtY+eKY60*$q|L)Z}SyZWX9#bY81( zmw{KlnpWFdHd+~K*)JTqy3^kf!Hfq|79CZhf$6X08~p#o*avU@khJ?7C4le-{m-6- z-e+UDI3P>Rw`V;pPk{w;bzE}CQ&Pf1F6hgTPq9FFnK3{7Vm0{rD$Thh2dv(nY}CF5 zgnxU@E8gQyueOBCf{1Q>4SW>$`fqF-A19-xF?RL3&O>xAS4m|u5%zZmpfnP}Mzdp% z8pRXP3S=P!q*}nis$^NAg3=c)_Uf7atjddRre05GtH0DOWN=ALBJ_XUfwCrkk{QyJ z99?U9M(9FuGPFc^mVwOS}H1OHuQrKwoP2Ss85JQ7`rkI7~}lGKrnN$=7IG zpmtrL28Layx5Ic4yLp69V0y%U4wkcRZ(l#j5upETT0gl0lsCbb?Xgd~6ek0(UX|*@ z>xM$mF9KiMR2(%#UzO?msiQ2`VZo{8E8vf@;LmCG%lV< z5Uq^q%R`@L(lq%^hTpq+qJm&3b=QYb+h>K_0XmHu#6zWv8Mfohs_=Y-{eph^bo-Ci zvXE&xhH&?<2FGb%)e8@Eh#}-{Z9b0_-8`x*d%r}UMFU^fsF0*2B0;HAYaCp3!g#N} zB#|g4?RipMy~2A|73Gr^OV>aknw0)c|A`jc!_zEy!aWVy?)^&mS(1B!G2HYE4qAkW z=dbL{6IP~@M%Vj212qBQ=)S^}5xji45?--MCy^+0e0IfDgT(^r!H~tfk(WB``(4de zV?~vk1HBP$btU+I?M5cQ6q2s%4E zZ;#ja6-OIwev|>(Czshel$lh9|G+|#^^wb2W*`{PUcQ_r;Y%eQxqQuA{X=i!;d#a4 z-S+$N90Ul{lm*&JcybpHuMLt)utr`lJ*qO@^@=TubSts+e|ab`_{SS~G68z`{}4$) zF0q%=-=evJgyf~d#7eFDy~P~%S7Pg-(8G@&NfS*a=(u!H0MWWZe&Kj-^G;rbW%e1z z3>t{%<>4DGc{Shql{G?jUu5Q{BHX;|^>>FX-v;oj45bA~Z!%~YmXaL*Lt|7FpzeoL4h^`+5N~Y;JjpR9nOmmB!u+g(*jgp%(4y{4Wjj zhCbtIhtgqu=pJ|Qqwl)}V%17Hs|+Q8E}vo3{+Zat5Y)#a7>w8C5$o5a>e#!XDrPB& z80eR^#`$Joa}#m9ybsU!@a=@39OFH3sC?&8=rU`hs~OGk$4Lmvij#@m^m)iEqqp?9 zO#+F^wMU(tri4~ZyF2c)F|D@QOqINj-_x6AVvFoloLK^6w$1$hL~}TNddizu#$5_i zGJL#V7e5ft#gCniOe^k&l0v2@PShPhR7=cjrb$%cQ2c>ddnheW1;wde^{~jn5;&x@ zdsqd+ASMUf^J0h#K-L^*FwyUB3&bME%HNoLUvQB-S(YENJVpXEyCxyFJ^vX=>@=vvKx2{&?)i69oG7vG zzH?)=xU}6hS^|rEeTI9|7pjG?pm0z+u?<4JiO$A7(%}Wt(+mnN5N4_;!oM-Py^%QL zp-gj#<%|qXtseg7Z}j`!FSmkV5G#=2tRy7QKlZpyT-|?R(H6@Z%*wS*j$2mqcmymdov;~me>PS5Syf*Px zz;4`CH?r>ju7uriR*mp$p0fngv+h2UR9rq;RadX)Zcbwh+f^)SQ}R0)`UY1wv=`BE z52aT}zrG=T-o(`Y0sry)^|N4t6p}G5sGDmx@tL2><*Ilv4Jh?yc{|=7hsHT;0F?K? z?g>=-w&_h>7zCiH^JyjRjp6C{nsQpoRaw%pFu&U@C2%bvRz>X0O5P zZx30C>3A|fTs7j665Za_PwUF-Lz}m}Mf3_%TWBvuYJi*9@o=<6#L zTd5`kt>?FSA){;(q!~`8vqRordz7^4gRUxInDo)_X=qf{eFv;V!g0#kf&SFU<>@t= zJ4{#J$5D->z{GY|U-O_Zw%Ma7bYpj-d5T7$4yzv+_o>Q^k-KUe4W*BKXEvJn;}5qg z8a1tdg=3B{+RHB>zVly)qe+4Bp6tZEzh_+>hb-|T`6Egf0%6V&5#v=R9fHg(KgZqLs$3==RgA|DnMaz;90GSv z%UM}RJ+dS&6_}R+Q0v>t)jg8L4&iI&SGi9*Ll%b%Anjc9^c1_srv%_87QL)Dt?^~*SuCe z{{4r@{VnFB?GODFanT07U#Doltd&i^u6lI=pS`N;u*kfIv`A0PdTdGs)Y)6_U!pb#PR0#}PH?=lJ z<`ey5xhAyaG9xF~fC(rnY9#3wQ>wAj)~+&!&wrzUD%UW5f_Ob;jdqp<0ac(V!4(|A z)E|Xk6|}Y8nr@$qZx?-T6=yrhVrh>embOPpGPfKZQ2^J_pBFId5x=yC=3R6|9VvXB zrtq--2r5^gsA=}Wnl1AB$)T$HK<;^nyvM6q}SI9mkyj-+Z_eH}<5fP`tbJHJYCJK>x{_KoJz$a6tZ$`7vvT+nA`T{u&kM z=%3w!Rx%7a;y#LQGc-RVULfs|G3^$|lc^BO|kN?kX zQu!;~Rm95Ref}?@p&!8%*XWeofzKwWG!$g#Tc1Uglrkl0sM3jbKl1yMvvb7WzN@6Z zRD3)M8O9m3CCmq1BJBdlE@d?;4i5}IO?p*XGPvk+rS<_e`B{~MVaqW97 z=~@}<(TN5{*+j8X;b#LVDvp8Py2F%AXKZlZ*DrRa^&ASgL%F>~Y|RL90K(v`dP^yx z9tSgSn+b=U1CdtQg@?Ar!{JPBkvuM44*e~cRE2;ZQLW?e4OrFzQJL~$(=a+ zVCgpc{ixXoejIB!mroI;#EIDXGYf!&^QL9IcglfIC3i9$QrrcF*o^N%9mg1J5TNPt zqW4NEs4(!NZGA+;B6K$WoqKzRANxgpeGz!P8F4#HxzBoL8E?4AA^1-YD7>ADf>IPb zPv`WvN11T+KrhEdYz$Pke0M;Bf`ygBMvJ1mi@==AO4QHK_x-oFzHt_2W)_UvnI}Z4 zX6FUuY2&MG`2MD*C#Mm7@yg|3kQNZ|i8wU1aX{{+0&}JWJmu&ssN+da>%&d4&H)C2 z!xsh(hYajobmYY2WtLf=y+m`5Bwp5rD33LmZ7*|jFrQJ-R53gi<-BpeE4@abE|)o@ zy{nKe)*zlDj=lx~@+7i#PjfWtW8;082Fph`!%){PRsB^Y%iUywqw-#3MJ#{pjV07j51JJT2l}XA!OPoj&+P#ePZ;E_8aHrt!i}#r|vA^ z`#&~_-}J3ePD%XcHqznOTlK?xbnwi(W=HsE7_24AiRS(^3+c&-Y|j@4p-pxnna7Dq z#$bECmG&+u;EB^1SX+R^XAcu)(zbc6d>>f#ScfR>;ug@&x*&Vo!&*IZkEmA3n&i|muB=G(G5z6zbbktJh{8tFn>a>hTJFZOCdb-P zDiF>t=zjddE{4y@xUjQ5|Ni>-={Qq%O_*47_k#pfe^qJz6Gp}qLq)XeKW z{dU?jFH}TXsUYU=?pF8i{b?`)T(zVPW;ehXhQ4RQeTIl(0+eF5Tlmu-)_6VuEiY5guiY+!|WhSaavme_%|%>0h97Cj|)n-XR!bi8~Q!U6`>sW`cLtRy53EcuuC9 zdlmOW%xJVI6j(oe5OB%xNV{PMD>(K+F^?vAB~~by1_T1`^*ghfpQDJ{I=HlLQ=W4< zWNUSiPd++JXw)D1DWG5PnR$HT$(rHz7vkuK-hn3~V(c=H#t)ivRDxm+M*8PJcE#Cz zoW;5aOTfQ5VNomc9Lz39lWs`z%RX-k=C4^T|Gt?ZXLES(lr3G&ag_gZ&)arePeqyh z2}h4|Gae$cUeMZn5&$w?0{_PW0;^kP_?g=IpF8b`X3H0~%)cH|dWZZLDava`l8b6( zfp|P=*J7t}K<#2|$8)kh-@tXVON@7A#UABly3t}lzID-S@o4sXO@d&od+XxTv}S3h zOUIe50oFDMW~jcu%%&iwaeA+J-O!q@(!7;p+{eJ&#PS#Y_d)8NAuZ)gdbpi7J zhknn4h)hQVZy2Z>{`wSA(<`7C`&M!o3xMdzWg<3L0hgur15{vQ@iip}-k~EaR6OWh z?fkB!(Uto!^eu~_+p+t>vc)Z9HU>3A*$o#A)TQ5J`Oo++t&$AkpNoM&Wu^n~&uYw* z`qgv_W4IS+MlJ|7lR<(66hX06G{DYVZGj&a&v-poolFIzk&-g!$K;S{lb|N0ULcGw zaO?MOo@T59$f7-?J{7h?bWOW$u=KC^vs$*`#y#3H#PSfCt6{Qc8}-9Y8TsU<4z4T* zyzl;8gde5MMhDmGF;Tk-zxTmW3fapr*jslHNx89CC?bOb@gO2DAdf{ zAW5_fic**K<3(mZA5ja7h{lDq%1=E5P2lSBH>XwBUmtd=4MlW8ltUM_VQ38LbYKD~ zmgt%$AvTxcWUy>1I^joVhJlkz~!x)t8P%=sSvlbII~ zKs;r&(F28j0k=kSy2Dh%reQP^8Z{qG1b$;;c#We(;a2?sgY^(8A)g4XI1&{yPkM4% zV;KDDJIWgro0P!MZ}w(H7BkPSsJk8u{i0V&((Mw)?`~0FPaDs?GEo+lvcfg07Py*) z<9P=R6ZzBDO&QVzU-wqjeV8F2N+sd-v_QjOCF`phM{><)wVFMcz=UC`$*!0Oj$vUh z8vy+v8rEB=zvySme$VG&mua_Y=(0mnn{m+ym?!#b#g%$IZ%<4Hi6cMfMja%#T|4@` zx_|ftE&Ob6dnwD>!?Ku|6k_o7)llGg>2M>gAUpYG(2B{Kwd~qsv{fz@8f}Y_Y+-Cj!#2_lYznLtZ%v2T0?`Hc^0W3 z*$G>651fI%Ff;;tK(~dI_@~2P@SP$-(+Vn0$F{Gpo|stwWo^vjJ@gTlJ@UGUNNVtH z$zOG7Ed_m<>ix%z93vJ=%A^XckDRO5-n~sA2S zSbwf|j&{W$C^3YGYwY%gKVgL-(+kL?jX@EN-~GEIszabh7&G5p&uZcHcCfu`-Z#K) zaBTP)X5I;mn^YRh)wG3=>)I|RgEmEYU(v*&BCxHW47yAUa+y?AiAE+kH8gpSDHG)$ z-n%MdZjM()$W4a^rM_xMYgg=e$$0fjd3h?NmK}$bD}b&BVN#U;B;1U|-+!&wTa8C< zalv+H70b&PCG~FIPBKrYq{f}heSa`3Gn)bLoXbFO=pY5>;-Ws2>T(%T5S~bQSZb=U zV$Un)nd_G`6zR+ti&e1W+qv47qTj^sNYaD?N(%{Dc#N1@e25n};7M1LlF-(#_jNxB z7_-XGd>)2p9zebwB2%!z-JAD8noN59dx_<;4)Pf(MA{zJ1Z+$!kLJ4@d5s-J<=tI_ zAMZlHjXlGN2MAI^u_0f;$W7YTW1!z19b6eUAKluzZ)RNZB;RxM0plb&I%LCD(9tQZ zB}xYj7ai?yZ!PV(+ox8I2D{*o=fziRas}m~a13+g9+ul09PDqckZ``K9xn^LXQ*yl z4lZcX6zoYO0cgeVz6>aEu#E&}iY^htpa5x3v*jzeHkGZt5xT^H zxo0x-xi4qc&|*=oCPov~*6Z}#UZevfYcf1fsvOJMho?e7@P3(;+);n#y(l5dxzQN3 zG%NR`c>NyuTX$c-ys(TQy+)LL^h#TmC@(L-akZ6P1!ps%gfq&e*8L0Jdya3@KCZlL zQBmMRgoNQBhXm$%sk{EM3lq*grXaZz>wx6urPZ-6{GmK%ve!?Yw-!4W`|e8wGu#pC zh$~@hw*lh=R_gbdpPpm%6%JnNFZS3{HXW;wdq|@%zxP@HiBU`V&u~UPiQrb_x`i~% zb<&SKFFZqL=UVZvGy>?ft76>QIo|pYX$E>Pnwgz9E}WVPA-iyyy93sut`(CnIe(AV zpjI|Z)mtRslL0X3N-7$eSt5=QS^b$SrFoI`$+K7dWYs-Xu5xE!MoUM9-YS?Q7m4 z92~FuvV=hXoG5RZbB^peZ?44{@lXZF`u0d0XsHOC9G+(98|#BdvIzd;GUd0Ltq&wB zc7GiDUOlS57x^R!Iu=p3H>V$lCu#+k$krj-U(D)Em8Pb)k%%;GYR+J7sKqMN?Ut5dPDRDw@(?5FmjZUVNRdTzdG{Rc z7_f+Erl7=W%3r)XnGQHw;C?B@apOjQB%3>%$v!Y^I?hH@0WU+*bBvvS@7@g>1aO$n z;C@d0wvP2s?Sd*eU{OqJle#4g=@H*-VWd*i?lr~~|zF!NN{%j&^-w`)|fIVO;qr@&|UE^_-!Fv5n3ef1OHnguN zyp#+X8~l8qs-?pH4pH+I3;(CL8_+oGV~Ye%m>3;m>!*y!GafNTMg5t&RoXlq4~lsi zNxv$ar$5oEm=x@7+K>cU-I0o7cK zyUko=`%)e=Xnr%fP>~LmSO!568Y+4HwiX8^r7>Rz^kRQ&Tv&E|4y2un1IV2n8oA%E(hAX>K>a z+X^b|m?~w)k^bp2jlh&JY4qOlGy3iti-p4_PC0vkE!9FQe^pi`gvDOOGwni=1<}P@ zbc&nv?ir#dPIMxJC?4~=Ad&fRuN_H-Uo0w7cgFRt2N}}qmhelJ4#g01t;0Hsx!b&+ z?D7Qg+2%=aiV{Nwt|Ly7AO#Z5Shs@d{Utx8aW_J-M_ZOrY-vU#CD*kQlnEXYu2&)p zwGq-&&Y0QEst05c>I;hAiQ?uxwVofHLCOEf9%cO~k405LO#-4O(i^#289ozOGhpcp zO-g|TTGdute8EYZx5beNPTpD?iFa;D2^z^{DyKQ&s(r*|Y<_jLl8e*br3X0CMBH0R zHT<0LVAr|Ua3Fs$U=_37@8Xb|*85H_<#EAhF4A&GbR$Q3ITW1oiVW-T1EdN15v(+^sDS~u1*+hII-HwBG>V*DI7 zmrjs#s2NiiW)l`f@!aQPb+tExxyR z`E`H9I)ZVle+(OPXX(Dp`bx(w$8oec9&L#bX$7KJDZZ@1%|mpZ>nqK|Xu}nS)eC4o z8%rPLl!j}$+49G4D8?s>U%Rtw(rVg18GARt6w}@)gx7bpi@wA)rqrrEcHU@`C%4!f z^pip6G_n1Eu%v+qtLD;>`PQ#I9X>_Q-z?<079z++kNE|tJ zb94PgC2SPO{Vp%lZxOohI4!PBxFObn#;s2oUCDQI{<()4D`0qOJN6>bs=C;|^Anh6 zxpEUiXVPJ{Hxr`bKdP2=%gWKMnV=(Eow0UbdFY{Yx@A{li9`r-aVJ!YwhsGJHRx@u zP-g*Py|?anKnRkR{eZkSR~Tg^<81n43NSK!S;4NqBONE41geRArU{s1Au*HTUzw(C2(5K|@|8 zG;M=sk$U}LR-StF#tnOjv|3Ho(W3c!_YPKdr3?kq)2?*=LR$)E&!UaJ+sxH7d;3ca zWA4ZA9hTqoZg!5>9v2tLQdG{X2Qtoe?8rvX^?lQkP|2F=@K_CfD>h&;LGCApTf zLg3<}b;&utY3p`WQsxYna6E1aeq^bshFr*0SOlYlZPC<62Ryyyq@LNurt%{|osBl` zREyPNBhVi*YLB)HB$=hBedGk2fsyJ-~;mUB$S46By9o z8Rxb1;u6|8muBSDTj$zck;tA%c%>W;T{|{H*R8ACfsuk9`uc(7c@S7sVsmFc7eNNP zgPm52QyB!v=S<(!HDTfqm1ApQr2Gz_iru#8q3Xp(VEJ?fU}%1jp@GgIOxc&W z^;3>CIrN*hsu-p-Q1}_#;)A2i$Rnc6F%aN(_cO{X;CgO?F}$48C`>E-7T_C z;>IeIN+)!hpHzv*pPKlX1$@4@pcDJ_)xx+dkE62rl8nDixqgQLcD&ecCk<@?O!K=N zQxk`&4A-nLoQKq{paj;0y#`t;zRC|3)9-f*xne7_3aoWkQ&(8xUoOUjaPW4*6h#i$ zoP*=RYFW~Uh@-{EbXf^us^+*cvzWCkbBOm^%|X2*iij3;atQ83f|5o+?s-@%z9S33;!MRY#k?u_$%0G;RI3FX+jIL`#K- zJyIOy;HXmLyAKl61nTYLpw3X&&@C?5VE|K1?RWe2Z2 zFmxyp=%r<5(f9H)OdUK+n4zW~b5--~|7<_er&pM@L(|Ge)0F8= zm7ZFg*7mu$M8qv$kj=ZJHJvD8nTQ)iBSFma#TkrDLc~O?CwQxNCU*QOuvahdwIb1e z^`SoaBqnX$-{UMin}Lc}Zw7laO34H=(1*~L59CmbP(*`SwvD#AfAERRuaygd3GDeU zq#F%Y4l5?bg!Pf-NOSaxSK-Kw9Raz7x9v|(6fNyhZats%2(>GGmq}NCAzsOLWFILL zHbeiq4{ zZ#%>)T{T!UpLhtYL6KU)?5?!B3J9gEHXzs5;K>iWE3x}=9&u^U4THc4BCKy?+?BV~ z{sVZI;?|W$Szh_PAjT(bq713L2Nu)g>{!a+Hv6iJ&Yl$&cX6voLyckH zvedEE%pKfC6;rH4Ake$i41imbGZ%{4+rY%n8qzIy4pp_m8|`G~NowDY5cN zW@Uy_n6QmC<|m_}#D#{-FsdA|D#GzxmGt zXST3AksDX-Ta4o}A>XXHM$^LD6MWb{fuHdSWzmC)wyQDs!6-HP?07NT29FqsCBSrJ zo{oz40IF#9p}xu!JN@T%I*zhEJZBy6uc*s?=7-WpL|O+>h>D<9u^o))$GpiX(DV=G{G_4K`S3oFUBgi zyONgN`S0B9uE$97ZYf=`&gg!c=NB+h8fH0POVILs9p-i;<}8E;h-lOLO;qNICR6dG@Fn?);#g zaPH@?Jb8_!j!TnY8d-VHv^4`r=KS>mA~F&ixQCyf^U{CJITEg>|UC!$+S*} zp&z9U)}z*b5KN?PfVkBzrXiv3vCB5W5R~ecQLAZ3iRHbTez#80t?L;M62~a|MWKTw zgNvwp*hoB!T(*>%N47FQher z^V3~a#k93!6iLsK#s~15&AyQ8bK6!Y89_|{1j%TU*nqj7Kdr#T=9dexviw8fw^Ccn z<7Bh=dBkgrS>u)?-zWMm+K0-ClXKAT% z2dcKaE*dtxABHv7^42-N8H3`h(}D=7NRv*3o{Q_woe3!GOYA52*rfSDFpruxZYCy! zvJ&M>RFkr;95O!l<%uR>k-JOC{G);vaDSVRFn_NNryl{l3TbaA7L1I-_3A3@u}n@a zS{&tLYxxEw+#M>^AesAikq8$<#Rfv=mu^XS;zkNV5Ap+>yh1oLo=ntCD&orhmgZ~B zPU%);4}`*hn(h2-5d`6sG27^lC#Vfp$pS{7=CDG|vM`C6$~;pgXNwOe8*|sOq+wxV zeNY8^B_0qM>scv4ZM)KkYg?U4F4|<9nJ0Ddp?#dq%*{h4JV0o}{T|e4r~`VrxcqcS zR=Vq97HSyZtA6uOd#86=WO=(f`x|g`IlhAsFTgRM*Zca0M0rkBtZ*v^>RJMqIAs}sj~j?_z>X0MfviNBWNJ6(K{ z3-2b}O$=neoAdkqDr9bSy50+U(GjoCPLK&2wbJ}@-c_WK<+#)Md!N&>uW@I z+aK=ce_Zd^RCj0E9MCP5jaxQOGoJ!gy0F`Z4ELKjz8qj*!H*UC*L_g+58zcPpn)2{NYOM}2PU^r^&jrF zNlX7AQpS71BL4R6+@V`YpV{Z351i4U_o9(=IjhgK@Lr<)gS(-MCl}8*y^!mNXG+k7 zF7!mN)>JBNQg-@+%CIbdhELMxgB{0lq$(X4k)TF@2R{TiiL-@I-Q2}DWD$o#MJvbV zZSJmYyPqW2lnh;8E4%GOb8^tZrR)7n!arVm{rG?pj2tibGx}{S2+^+X-R?;6T+GJjoyKXc+;1L@V) zIMmMWgG^eJ71#1fwQ(uQii1}hFljp1ymyXZpe!2nzI!~bchZNuAX_SS@ifTn4;V4_ zk`gBaJq0JNh>kQeBM>NtfpXH~i|v<37adV_+ggjF2~M0 z4gUKhY7Jm`&94oVVs=gxm5qu=0`_XmM1rECelV$4{c7QW)(?{^@6FCmn7moihBx^l z__52RQ`P#(P$hQvVdj>{q)CZ2XS5-gX7|Dya+e65OTxn6&p&*vOY-=!@A+5p?D?P6 z)?Dh}-PrOaBS{y>o>x$UEmT`K8+&-X@zWB%($wzU-s(2)G4_KVF=}Dl9@7Es*igB% zw=!nj!(m|x5){)(FtB#tCA0kC^Q8X!N3&zEv6n+job~m`p`pIuUr!o6`0ff` zF}0Z6Qa|B!(z`NzH;oj9dTrN}Q@I|+F9^xRBC6IZ9zw<1aJv&PA=}ps=W5&^cR&*p zZ!~RGp(^G`Ifyw}+oGtghHotd@6bj@pby|tk@CtaDwf5*IQCy{*=Em^hUWF6Q@UN62!gr~t)U;wUv@35msHv-OVQVAExaAyvz8Go>nWb{1 za^4wR-rJbYua=zN#xlFFmb2g5SB8)g+t%G+%5lFhaL8gZQlh^o-y2So-{8+k#xtx@ zQq<7U|6s6e5|lEIvdiE0KYY9%4^z&!)?FB{evl^HW1R|hE;uagSpP9C-Fx9&8Lwsu z0d`37nH{`zWUy*4@}8>Hhm7MLhb(22;>A%bgXxCwmq*|38f0V;;^Kv$qBk$6Zu{g& zVO?NvLw2G+r+%#BtpeVgtO1=Cf~i$)k|$46lam7-RxG5WHD24Lv$HG3e>9brIyC2z zfBNd==Tw1q<@4=T#`_;U`1c>CDbhu!UVU>pmYBa%k$5~=t1x@wxo6CDrS+v|sOdFl zWtGcuFCUvv=xkv~5g3s^Hca|`yWy_S2_Kjx-(Gqdj1NzfRqfvXd=5usce!x1h&@-4 zA#Y$X$-CO!RrA?viPam^Dp^dAn!-a34L*d0?&6WHAMF}^t#MB&&?&N#iDQ_ktu3+~ z36wlZ`lL|l7*VyWUvXvDtHIxo6x#ii@9OyW3cYrr=s9;vDcTI=QXquPVr69HTiq;Q zgjSu^K&hFLWnVMwrJJFZRo{4ZO6{?R-K5~XskzM#ej!;^xsN~ePk69~YgLI~DT~dC zx^py5Tf*;?t`c%+VsRnY{})ql85U*RwSj`7Aks>QbcY}{bdP|PbSsE72t&6>cXy-G zjWiKzv7_+eSt||6u8ds-*FQA7|+-Lww>w&V)!1(_BkrntFyfY{YpzsSts88=2H`s z@%^S)VQZb2h@HY}v{j+cRVPDj?XTXdt1l(zRh``xHm&X@(gi`F;Z>f3 zQu2a$>p~Q9ZOv}#;js)jj!1v#(gf5G$2BiKO7U?&ZceaOL$Td+Ww>kUQxz5qVoOvR zW`}csgTQgNIrX#Yx-{6kNDkJ(OvA4W!~0&!GOyCnid5UPF{|P6INwM2MP;9ZJPzbz zw7Mc{SW3|>=LP)A-9tvrHzzrY4O_|!3;*o5TzlQsf4DxwJKAUSxma-LNL899lQjws zp2!g1OBW2Bu|k2~&;@sNr2?643y{76FF0w4Kp;ZLG5@s(ABo-_@L2u~jv#kGPw={_ z2-^E-K}(wyh!qYtKW0YjQo42eULneRRG~DMp|9nZ*ZX+GC_|}wZ#LBXR=w^V_lb)1 zSay#p`NKuMTO;%4O#V)c?XFWx1&1Vvr2jI-wvT8qn^LZ;Zrd7boab7gg~5VyuoM>F zAZMKw7EOoXS8|ld;qA;p9RB!#LSTvS%Qo}5DK1Yp2Zd*G>4Kph+H-S_wcIqhBRlb) zf}}wkiH7I}+uiAXAEN#>jn39r1)McZprK4XTvh#b66eoJd13b%Xjo8C1VR3%*jCEh z^L*&|`6A)XiK@7H0VB*EX?S;5v%xNRw~q-IH-Jj=ulrfGAejU!Qp&rLp={j8r~&sU zs>?u_);G{!x_F%HdsThjUR218R;l-J6}a48*{2N#^2lYCl&j97GBZX;n`GNK;6A_; zZRnj|>*YyR`yQkQnGt)B9O>KBOGTKOA0;P0nkT-@?}6yl%E0XcdT0k+x<>=J5eL_g z2iXT^s&sE5(4)B}1Q`zysg%CC=?n{v#F(7n*e^)R@{3-n-n&}$9-@YM#`6u+WevT! zFKC92=Cq$Z+i?FEEGJt4;DM$R-B2kPYz&mCnO{%%7B+Jz(7ya~vTp5-*Iru`3zc?W z^c-Gc6*xE<;Jds&57nB4e~P&}ef~;B=o|JBK}H$?4IYW9HEOTx|A1Vj*%Gz8!l94zudy6y0EI#*Y9 z-%k=;OdMriz~Bx`nB}T$kN1gKC21|+YDY&01izTig$h21(cX-2CD*j5Fm7)GbK=Uq zPgPYEYzT(|0Y<=}ey*FX$%R8QdS-sf??Iq(RIWC0qfEx)O4%b3?NY8SYHFO;31=%G zk@B01i+hzsqIZNE4LDB!S-*meEFT7WiBa)RI3Us&zCLa<^x!PX^6^qSzdH3d?h+XI z>>Khz%xECx23w^2C&iPh+0!?l+qtdsI~o$ZBI3PIqQ7(qV>~sVDi8YDM!oAqG0(p} zXf%vTK_+6Rd=Ww3@ya8rtz{G9Q!aAH&nKu`dd^ig$!`&tYpT>ZH!!%}^C1e{>dyS^ z-M_|Z;2D*%121pCI_{u%ML534mXaybSpWV#NPQz)5_Q(^89NsE_e`wsL~Zoef^Z|$ ziz>bE>Z3f~px?acfRbyIgbJYaKo&eCv(i>uiT{14?G69zC8~R7bp|IV>4t3dq{7B< z81|yBvG-1xQWBff(wJK^x8e_dF_84ePZndh%xc~n7{kY#>enl}Rx-UsZZ}n4?Y-^o zE#$LdC3#Jm=0xA6EU zyO{O{hi3|Ml>o6{0J`z9iuq3ne)4Qh&j_vntrVYEQ;|~U>vVf3C}>m~;AQ~fx**zv$#J0s5;8K&%N(;?WNX^+tkYJLgY|y$(?#1!t zPiYx@_%`jIK_iE)ejZ$FXS~H%K^7we{;j)WkcIm1Yipgclda+2UWf%hS-^Ca@%2ge zerFR<)>9mxK=mSfscwjou>x$P-TV#WLs;{zlZH%y*bX5I^fLhlQ8g*G1ClW48Aog`<;S zX(4*koq*@#auU!#XA!r0*!3bV9+oy<`NMHI$8WifChns4r(4K=q|;54i7$!q(F z7NYQx6V$mqL1hHlpo#VD&#!5c8x88-lUdp3aI)U&TvHC$%sO-Pcz*|c6>faI$4FGN zMz`029NIBMKSF&;Nk}n9;+QgIW9O>XDI;ES3=Ve9>kd3ZuCX_n0Onr>+mFZEB3W2a zW4@!8!w3P#!wUDcECbG5Iu!3IHddlqMbFd@4?GDMw%YTztkUH8}2}v(0mKo?H+QLB=7J_{%X=Ak)`0y$3@5jQ*XU zc_3|tLGyaJ0M@IRiuHXua|YU{ND{!3XjiS+)OT3_V)pvmLqy8|+GC@i=r6vXnAorV zg+D~kQKo=&ir$DBYUF@JCBHGY=6%AEFb*{_S-L&nYWzM1$kn>Gr~OH|tM&zK_?u%r zH7<4%wKnLAt;p@1AH*(JBN=GvnCzWzTtV0nDTFuMB5KkB7j~CJfn4E8F)`sAddapV z`f^T`8BPKDFsgY~_6>CX9&dCMtd=S9yu9Bi@Ne$vhQM(-KqlnW%XF_av>#a-T1{FXXr5JS(~hq`YLp%o&(#J`Lrqp}$x(EEzy zetY`vNQ99-mfNw=^ypJ$ugx_<=)b$`+(2xG>(0NfFTMHHZWlgPX{S($!4D@=AFY#} zD>^&=lh9t`!TG?^oYd?Z+nWdy>9#r7I0&k7KjL}Qy#d8N8-BA}-|vpFGqpe&cpEZO ze9B`Sr$%&VfA{82!TqotW}4$!+aFv!;iwYo>R%HLR)d21SG0 zNNZ=4(#V`U@V9Roi^aI~h`Pb? zUo3X;!=un?Qoj7{o^xm4H8Obu(*x049K4*JNyCNJK!5+c6Ng^RZ`#_QtR;}d<}I8E zV`_gzsW&=N8F$IV=r!a}gH1Dwsuc3z<9{{j8*%#gJyXj777qK1QY+9PJ~myb4q0D6 zu}uUa8az2Sd;C6S`({%e>x(uCUyaaNQp#hM^oV&+=eRx-+WLl+oQS!(!bp+cY;ws^ zf(ek;yujW!2#}}OqU&<yXMze_gh)~gDIxFk0P7pm&Kawe zi$wf{N>NXI=tB^>BzXeqnzelv2b<#=7;hE?57B#+W;jvg5!|}NLpyjpf*^|=U3+Ln zwyN6=bwI^Z)+jRyTi?)#*4#!xiU-rbuJ$_qoFmfGg# zr?E;uDFoDH1TnseH|&(=BR^&&{S!io^MOV4bM$#OIZv-0uv#-hx-_!8ouv9SP=S2Z zN0be`))N1k`FhR9+S942T7^tP64yqylkCVv4SpM=n)vtESW8wC>&V$X zb&^&+gJ#B-!1HtI5oWUqA_%SHU#}ru^Q9TW>m^JMc0kciM-x>N)D__3?gkGQ zajZATbPy*`^(+aL*H;|F#eCK`asu#?P{M(>y4!Mplr_2Q|2z*|*$tny$tN{6jrSZ~ z63zJdmx-*hRQqlg6`K?;lns`eDKv5t)8*L*Q=BX5jNhL68@jV8*a_K%krF~ahfQD; zA?r!?B}`oZ3!P9C_4zk1DN7=fDWY(rj25CK(nHte_Wpf0ScD{a9X?)HvHlgc8vg)I zdRhhgk;;>4JnKzz6zm2Y2&i3Rkts)S+BZ%ByuiG!WY-~qP@lBirZldHK#p^=`*+dd zSWj;?_f=c@wv7V{lF-)aNVU1j-i&!^f5WWxTFYp8L&}ez8ee`hqG)<~jju-LrSXe5 z1sK)tymF#~3p>C93Zt~TuG zDWn_#SlCnNaI^&A5-oRf8u8yjoYj18!IB`TX_TYhcYjqKNACC%zrb3v@*xP<@=K#p z0@0PC=KexEq|5RiercC}1&gQ$wjh#&z7IlVOd}H@E#0?pZnY{yWsy~|fA%Vfm>LBr%hAG|&W|QtH*#l6+jCYLTCxrI4H)A4-r8@1_)) zBYt5lrx+0$L2t%OL)jvFFzqSWNPjD*PtF%eO@3LN zD-MHD2=R^l@=~3S4t;^#<>Jedxgdr z1$y%U9LFN59tgNcC-+a8zuSu#%F4R+ufO4->aDFFlEff@lFPq^VRcTm%VJ@fe!aiQ z6?&r@L@#O4;Qa_GUZbSgxXYrs|7{>vjUP&>?y6m(WcGVi76LZ8o*t@h6?EF7zof99Xvq!6x>^-E~wHKDX*`$N2c3 z<=?j71{!cEq!R3X`H*7Qd2txcFV&X}jO+NWoJcIJng$Nh_|5hne&`*2dxeW2v;7@? zee0ak4bfx2N?XM-hYz!ZyoDuFXFRn%-=IUynHdY|0>+Oq72Ho0OS`bY5aM+>Q4Er4 zLJq~AK?XQvrutbjQ^jdsYg9gh^h1qt|bp7fZHiv~QTMt2Daar}IO)CJlpQ zVDFmQD({h2(pF3OU@f;Ydyqg>;FrTdv-et$kVXLr3QgV&5RbH|cHO=}${(wyuAQxr z=pr&s7x3@wIMfa68!TgHY8BR#ji5MX(~gnw%Ba+>9RgN%;&b}Bw>?1I4p$xYS7i8y z2<}!`3FdFlp|e&l6FyGAtV!)p#~C-Ao+2V8>Qzw3qa%KMwmrpIQo+~Lp0imUE1=j` zF$=0RZCK;LI5p*x#THou`7r?Gbo2O8F=*kC1uvHURGx=qXBa`IB$OeW3VUrZ-%V_M zeSUp(EM0Gj&vFkm(yueZ5sa%K*EM~M*SO6L-(N7B%q9xNP82?rVs;ha`SO7uo$hu% zg~wGb(PpIGet-uMZn$e_UC!qX(kM}^D`!ug=a%EYAnrKe>XP^Z^8zmAyWP02?ssIQ zi5V0fj$2Bp9YC)pP7vu6C1Pfl$Ls6J06CObfDf0Z$2$@27r$ggBzY9UhCT@Hy4=N ztc*a@ab^FE?Tf>%M|Xtrv`#xE6uG#Azq~=|?~@dYPSQcvQoiKYj)PmX!~J84H8Mj_ zruNF;v;bzZ!=jK#gEd`8Fun@%h=Qg47_GQ(6poSPv+vYWR2)CE=3eLGc)L}rjFd$! zyPKdZq?IigNn3$Me(`HieY3H4Vs}CRXt&B7A3x5$iZ)mwZIj~7(>zr64pMBO*S-HJywL-6(Sd`!00%H*O9s<&V z_aZov?}=%}W@!sWg)nwVguqKZPwAMcbZ6?DET3HJJu*olG7uV!G zAZbB+>pz$FbL>eSF^DY~M1NDN!R4p#0;Yr&ml|>4f-(AU zxpsdka6h!Kw>^Xa=)<^CI2zK+4|8?hQ8-TqDNIZrAp0*fpS3hJ(qnVWL(pd`02l>Q zGPU?~wyu zoI9v$jM)L`+|7*+5$d%0VP}r`n%RPd9qxCxX0LkCXJPV#IyYitVBiGt%N+kicE|8X4*)43zy-?tErHuR1(Fxqb}7{S}UXLe=U#NMd$E6vkx+ zj1Bgj9<{{G#W}t*#oDp=XS3SXkib#%Bw@h>-GiS}TU+rAia0kyWK$wJZE!eg;N!(a(_Jlw+73qR_XmMR z?a~bgUv5Ey?6i5?@xgLf5pGDzlXHXUO)mR%>3taGrHR}b(h1;Kz#vr&+fR#Z$~dU5L3 z3^{Do9mxfb%0j3#zite$3A^X0yva`nF!DU9;Zf-D4xLTc>Pv^9n!2eLW7Pe}p#Wv% zT(8puLyZnTj2Xv8`x2gl4GGil;N9yg_uAUnVi%_~#J;;na zHt(Y3tDTKv1$p6jZ~$P&=>^?S)+U+q8d6FO*vt}s)-?i=1~sW>x8;s&ycFJFN$=8X zK89!z;%b!iYBvicI$?y9B%2OKgom{oUC~9Um7!yf8@kdZ@cMq}Ct^TP{}vKX^p%D@ zv9lx~9z=!i@2k!(_-H4$rp7gMM|AWti1FZipJJXeUBs%-QO}?9@$1y&2)$)jgLD3C z2pZOWF`0Mm;MfYJf@Qs4osS0+s0(b04-us6dusZ(z%TlRy0tZo!U{v_l<{(np^uQV zacRi3bQ)-z4dmXfIh3~{B*&;i#C%Hhl21=3U8~zbe00@KQ{g1Ib!kV(?^-Fu6Q6Z< z_2=vI=PKXD-yO?Nq-AxFh6VFgrTnsO4PQQQ=C+}ee2lDNP#Q)&d3D;9cn#*o<$AxL z2TE~wdzi>h_(Z9u5Jg|8soZ8>QYIqjhN9)Xlo9xAtKDC?#-#vO7rCxpYEuWbG(CVW zP{~@Y&?3s0^%g@zLJKuZ@Xn{AD*xpmiFGf(KH2)VhCrbSAK&Kn32>n;(3rrov1a&P|^>!zy%GkH?jv`8}IR@XB^$q6Uha zD$m8mtopw0=Y?A{w;Q+JD7{_JBn9mxsYd&VKQ7DaFVHRc{bb>wNsi`>q!+Pqkm12 z*dcNDj|#}fM#_O@7w%;K?RMYa^Tj?%I8|*($e$OHp)s&ImssQWw+l+qG~NmKbrDPY z4QDs#^*}P%WR1)swcY15-r!esDbE)cKH_MOQ?!>_($mymZ(1kds~sqjb6yML5NwP& zmZl2^4xgP|oYx{QR@asmNkqU28Qi>N|^DZmecaw(rzpo=euCi7S#2|{+sVyAqZhiF; z^4V30UTcf_<~TCaujnK*$NF;fqMEv97Z#()>=1P|lms^U+4|UX`d*kUUh3;s9w*jb zsNT~U8gdZs8SPjO`3LS?pSDSm=A)+!=@InT!H+HrL8Q6r+VK>#Kb*vldAiVuJ+Z<> zUQyqaTY6Xp^%Tvbb)8G^O@fu3VSbwN$@ubW8Sr!y9{MM6IfXSc3hZqS&dwy-io;20 zSVPE?+ET->4rnBvLsJuLNFBII2*`w3r;PKTh!~!Z{3y6SJ6sTVWd|>G>$Jbr%Fpt} z_3R(rMG5As2*X&`rx;>e*Z@{<8)|SwJ7tXXn}z5c=0@CJ%R}~`>`!9XE-uxrpnJr$ z=7F#WSABzFVfS^aIh^KMJS?n%8Ccn%yo*II)#@YbVdv?|*giTr_~EQAh>KQBLy0_j zT5ZZ!R<=QLVAXrR??(_YS3_K>jzC@BM@q;ZtdzL@_%W^|lI*sLGr1Rw0L8AY(OmZv zF$`DNqvN8H5tn_b;1DieYl~$MmGGblUOIXsQPzB^G6Sc$%6e8tVmDBg(^K_`mHmrB zt0mwpGu^PHdVsop9{T%j;@AR68x&aY@7w{T2GY)Xm)LJk7>nMTCljd;5%9Apm=Ki| zyp@R5-MT%=(oFG}H>DHbQB`{jxWjsQI+&K|n-_XxXDQEq7h22wf0zKo-p{_!xN3{S zi@!!+(CV()iWV7v;@cR(W`9x(KlgG$wFYrymBItJx3YE#^1JH$61-zP?vi=Mnhj?C7 z8)MOrm7@ztk=qkHs%xpeY;8D3-A9DR!Z2D!MC|YY0CpB=bl504`NBTpSnmz*&5RxQ zlTn}~ogrx!*$4@5&Ja&vaO~Zh{VInOf{hG_PuM_{nCuSkD?YI8G~bRd<3Xj&!Kgd%9bT zRtn$=1CF2Qt=~8Ezqz5@_pfs52?ueEpP3`y?-&dXeLR!p8%?u>>~uMHuo(2I zoJ;sn-a<0)=n+IPg^RkKZjv^Ss-K(PxWkRnnRG|`FOj5%>MDp4qdR{-uO4PUc~sn_ zx9M!l)6-w9SH0;VBSW`LM8eC>z|d8%=i)M{Vq>HJnSOtfvQX2`heRXmk@XDacAb^S zPu+JHs^r&acGhFjaej{%TPL$0i;RDGf3QcRKXSj`686PQoxObE%XEvAOv38VWoydnAyioj#J z$`tQviHz0Nk>QR!v$b709tTun=hvC|p>RE52A8sim{dV%bh;y79R=%8hi1Zr>ZRh+ zjMwtZNo{kiFpkSK?ccv=+|e0Bb_2u#=_#uQnQ-M0O*86;o#jG3R;de>=hyQ-&ZGeg)iibTZ)V2?&!L8YCDhU z7(gkGhI**;X&f^ru6&vVAOdN;$IGy^H=o4Hv>sw~S+ROqCf?jZ9sWDTlJ96xgbh@B zHz!3;?rngl;I(1YzN-YT>=Uv*mff}n=6||t0zbUoU*B&o`c6P@O56^DF&}Y2X&bh!_5{IFV`aWR&PfOoJxNqnysy-*LNa5UfelQI2d1XSMcL%U=3fNt zycF5l6I=H>4aSy~57@>jwfy;k544ves_jb`(7xQ)ls1PB=SA+F2~wMz9_#WZ{=PA) z$*fGM+)ayiTO&h|aE-xRc;NNGy4}F0>+9uiXR_h+NO~w|G~alw|1aV7OC zbvvz8#T1LbfRdN!WK&~m=2K#$`=`?>n?fV)^%Gj1)oq?V<6pujlZy~QnT?!lh6eR@ zm}52+7hffta`pB3qY1bfer#N2C$xrFILdE@a^#C5k_0(IL=Z0Tfsh~IT(9XeJpg#R zwi|b6sW_Q3^FdC)(%NaU3PhrkhKj+wE`NNvJaTBsw2C0d%W>b#);iI`Y8cI{Pq_GC zHrATnL(5}sluhyEk4f7R=h!rOIQ`I|$S!AfgA2cJ(yc0i9iFpnumfTpjZRh zGH)W?(N`{8sA>F14~NuPvv@9FTK!FYkA>0;IYY0g6#Wu)JHZ5!!fhq=-?u-5oG?y5 z^2+BIAtBwW;@&t>^koO>nB zxa({Lkw}GzN(V;E=WDjAEx-{c?vzi419KdD3rMqVvXLlBc9|cQXjjqS@6}dyTejKE z>ol1vJv*dSL!6i|j2C@*PWM%sTA6x|JqsT33gPwvmmz8`pi#UW#I$I?o^xNYK<%0H z+;`3VDW4b5yZgOsOyoyQ)#vU)FxSX>U|X<=yv%+)+W!=<=05a0d0QtY9RObG3^5Dx zhLpelw*?y>2(r}wGD+c(Hw!K_Mb*_QZZ8Y%w_omWt5;NL!5Dm0$+P&~n%BO3=zQWB zooT49(P>-rfj76NWLJnHx5HOGg;Mz-(2S6N8-N9}vO-tzCy%T;Lgp-x7d#srvFi~A zd_Zn2O{XhOtI$$q?3Wz2V-Yga(g5TGG$h=J~3m;G^iVf1`g+p4_5Sq=$iUg;OYX06zM@dA*sJKDFoLi^)&1iCXxY^KV z<^0sKF}aMy&`?Qh-Dz388ab3e-^7L!w;l_8qnlLGRso=;+t;X*DNYQ0zOm(=J?ezZt%a2P#yuF11lED0y2m?>VRhi&jZ5I5!YW>d(fC{5Bb3XOQQ4voME@#n> z(XwS%f!e8@0?u(uu;Z3oCK#}zdbayUJ3b!N?&yF8zeb-WcLr`wwH|Fq>srvNJx%8kR`^@xv}c z;EVG*@}7XN#I(G=6SBns1NZBW_9Oo6n+11}jJ0zJfqLW|-+T$f{PVk=GLu1}a1h!V zt&=rdJI^c35q+MW7$MBmRD!n-6+K2`N8ew_vhng>ir3_tDC77}(Jk6LSmt)FA6J3y zJ2%G+Z&pfEd~9K@+WOmAnP8XotH7#9;bZv&k0mvzGNU`*=h{)i4_o7*UC|MucZ~O2 zT}D`h4M7p<#iOsj3~!KKpIs%0{P>z?T$%{Xid^Uc#zW)$2;`|4*C=JeETn=2;R4P?f`2H=P&6F94`zFlX|3M*n3wQ zvoB{e{C6cR&J$zNQ`g~!e;>UHVX>GYg1E45vE5Ql#>cnNwGkl%L9N3+g+vBycSiec zu4-Cco%v=ZdQlWvOzU%1B_a^%z8z6y(7^4u`1}3#*D(!HU=!TW3R7=B(8DPFs!Hx> z#S7d~Owzj~J8}I3p^?@o>SKSMkEeONq%4=EYZStgYrp*l2`?^kJ?hKsab@>Pu=~G| zV#MtXpkiHQxN%iA>G}5!m_o>aca+a0phIlVu&rfW&k2l(9_lytCJ3kg0L8&)UqA`O z&wpDzOYVQ!Qxwi|+RSYAGn3+NI*v%^Jf5`eEPpzPGEVHXH|+V(|Ah-2=&hoXFYPD+ zIsN!Ct}%u#*m2V={+fAbf&iZ|HeJ_t5`MLW!M7LF)%xu>L*jq#M=2<6by8TO>E3yZ z#Gb#(5q;VTcpK`rP`-R6m1ystm^e@%9D7_4%D2$X%Cy{UP)5Q(p3Q?v z0-~ypho_-u3Ee4($Y&Iqys)chBz!t94%h;-lJ#ncLn1wP*T}A`TdRS|Pi!w{Yku{+ zB=IBo9rE>_L!eyt5in3FuwQhj&2S*Un-n$~WL1a3vnSRkjzUZAx zZ}5wCu!USe^X!eE1`#h%7XfN&3@WN#uMQ1?U6H3xS|K|5sW%>_q?A^?U?&wihvt)s zm7?Ocsg*dUp$P=_92Mrq4+Pfmw>&e|6++yjlGmHU9(6atU2i-@#@YF*?l;JWyCHW) zs-`<9sCw0qu7ze3`AiKM$Rc6&C)I(Uk;FcME%EdWl<0ueK@QzyvGHoQsordoJ+7kg zIXq9m$f%q+mPpaj$2Ut8bxc7Vc@j!Wu;}_XAoxo4jDhhyJ0#R{SmI23Ow*8{*E9IJ z#e52o(%bVR28ux`fTI*Lf3=T@ATK!=U7FZoYH|5Lr9J{B9dMkBse-C>Q4NG6 zGi#U;vT0FH+e_w1Ca7Vzg3|i5I-!IWd*Eb6H$BpRf29l^mFkuY;O<$9A6C zVoLV*G3~4bCS~?MP7i+Xn<_bTfGYWE-i1<>g{{3yoxwlp?Ql{w#R5UHtK>+R{?EM( z|Dr{CqGA2`G>9o08F=*A0+89-Rpi~3QKiBr&VFrvfYcxr)*3@O5h9rOvz0&0 z5Q=dX4H!4>F|&J{{xaAm>&RmB=;(DB+kaLBm8hta-i{@%w3Mms3E;h07ajq)-asna z!l$F7n<9~Jg!g-X` zxPq)dE%qkBQNIKXfpg0z8jMmtY!zVL8&bzCWIQGMSSj5}{U>m7J?I8e-u1b!vfH#R?$!_3qkZ-eoH3LIQ^w{h=SK0AA_yzWG!`Lj|{2 zOJ7I&$v%Wa(J=_A1JVsOnD zS-sjG9OD1{O-LwD6s#RM_d!;CIs^cej}G2N_DCheZVufqUqqTF#1~wKI*Z%XB14sd zq{J1K>`u|5k%3Y7x)m!|nz881q-pKe?B@Ri|r`LfkJ4qRfU{miRu$@R*+ zn;G3}$>A2mf#_4bJVgz5ohTK(?;GnIL1^H$<{SOGA)xg^=mrh6X+SSmLw_Z~UN;ax z!HeOr>el9jjsLI{0Uhs*ALvkk4FjvGdayPg2j*!BGu^F@?$F(lXVB2B>oW>DbTjM> zwy**d-Eviy<|A}IqMFA{$llHP-V@GA_;8!muLnKGjCoZz$e?$uhB@QF3=j}PFRg(@ z`eca_7s(eEuL(@QNgZxfN1OVFfyCSi>41*4zIu4Fwywk>v4t99Z^Eq@=OYKLBvo=A zFFnnhZI)IgLB-5cy*kR=a^(SAGk`)3qQ}B$=~GNawtoyjA}C7!QwOzNApLcwV4`6D zd$pJAWM$<;puhu^fKv;5g#LyaNvwlEbNkP;$9FhWld&YfE1x|p6c|?lC9IhDOpAkM zshM8PUM8-uMEz6V z6HfSC3%@`@67zhD9idgtNJZ89jz7S9Hl)@TN?hda$NXx>&mRJ$Mra0!T@lkz+gFv` zUWQy-Tb)Ziv@q{fl#s(4BFJbguTY@JFPba12k9b1wvRB)0RGl&qW`9w6$Bx6#YV$_ z!|<#TWCG;5w>l4J{FB59fA&HT5TzUop=Eh#3t3^~(jSE1rh+~NpAfs!0W&PId;1wF*4}R?VoV$$QyW7{5FT`=&bubA-=p^xwD)wRDk1#rmeQ5 zaPx=?%t~HgIj^{M7!4rE!YY!8Xy_m2hdR=OiiFhpxTc`xo#nTu8!TmElw?W|N^(mh zMLy$ahyt__F%u?|IgzM*F>0kd{XwOTmU6^oNhme?R1Iol6Yn9~bjNGO=z8eikVn2{ z9{-%8uX|7x2FIm{NL%#=}oLxi9rA$7Hu>$SH*a=c-mm* zJY1Clc&=_n_P?XPoSoM;&ybL^NC4#(Fz$ujrUtJUEqk?Oznju8dXWN$CN@}G#(?z# z?NKt|S`eM*KYq^Cw5$ddF8GA^2bNh$%UPw}shON+m96ABHq}(H=8vdkXW8rS&IhxT zg!wcF_CEk@GxNNEi6Jc{yE{NmsE%gj)#*Wt(yzx%u zuD~Fc&;#G1s#WgX_K=~O)MnI}dZJ56WrSpKLsA1&^Y|GMBRrsNJh4u*~i&ptc zn0VxY7~0cDJE6s?NBXnOxNjGiy}xMr`&T(*B>OD$vJX*Ks?_bz7A~6kaW?vo#4KhN0CoZ>lU>Z^F{Zo}_6MRHdZRut)GCT+WDr z^?HiA3H$%4;|(3H6oX|E6}W~|yZW#y(=O1R!EqOv{0^|8PfUu-+gA1HUra8dPSB&M z=!CR9LQ-an4c_5;o`VGkeH!ZO{Ha9NV&ky_Mo3KY~WcMsot@&B6 z!Dm8z^sI`RAdrcjl5y@b>F1XBcgu-)h)>_RG!V;VjxPy~H<(a90oJck8a8VV8^qMb zZ#+{j2dhZE3zl6k2X}OD9;wmWpE3X=X9*PrE31kK`Ukt=?}1Lx%fKskldZ(^2 zGIouN^`R1tO~Bt*eZ8NKR>2Q1+5 z|8bo@e3(_e@Otb?ujS&9>?aRa-G`;uC&XQ-4|FUv>hi(fpf>Qx<|xEj%m zU!yPv){WQ*Ca{@2>YJwS>^`r-mvVPX6uwo{FfpOz7;O3AJaa zXsDEEa9zU+Au6>0b3(7QFi@hLzW7)Fz8ibt=+bW?YX3WGV)EhUWsTTe#>)%y z;|}-J&a%XAK_)D(r0NRiM1^!ga&p6aV9mI=aS*76#)Ex?KrHT7#$S;*f)ne_0qWeO zJ|S`3t8vizW;r>Ob(7y9PR!Ejxx)e`dva#wv4G{I$G$>IMc?l1C<&{eu1+QEO_0Cm ztmusp7%QPi1ThRkGC)ui6v7LbzcT!cu!!B_!Y7d?pG;{Gbq~=9!0x2-j8%WSls1jv zwr4`jV`gpg(rEVPv@2b!e)ehk2OLETly@s)>lz`8bzJ0KXn7!*Sc+oY&_ePG^Jyxc z!|?9QlXFu8_VC0CdjVJHcdZ3jxF5g=Kh;=i{mvz9oOlTq zFCmVFzW=vu?nlWNnG>*r0AKBmW81j@>bFm)%k|y7qIh?9bOVA)j>%KS^bbcmY zKrD_nlDX>o(H<+YFG^@|#~x_xrR&{gM&p2CAeeS82wnAYA-qy+97ZZ`Bs$lZx-@O>K4Tvmc!zA{i@;I$qx`fufO3Mnj1ePppyekeI;%U&@; zxfEK$C3tBODsbXfprA{ED)|2Wn!fqoNW49Q@O9^|6FGn;AT*~igsU(`ZyFf71T2`0 z1@i(Ghtl;KR|4gOY$dcy?c_#w2Kd|QBRkh)taeHtHLWZHa8<+W_Xcn17Xxeor~a;E z`vd1Gyyr-Tf$%j8$184%kK$Q1`QHw8#$p?NbS7=bY)7d}x2GpCol`M!K`F`{07QUCq>)c{`= z8mgG@v754tjEOdJFN4b81T7?GVF!9mx)#x>gn&T^8jjCvVzFDt{3EK-s z#1yj>eEG{}EW#}}2LwkF_rNaM-_IAk_wXGi?s2CFsRm`1LG$kU+>4I-WQ2B1JNTGb z(z`f1I_G`%={gl%lVbi_I?!EwxH=Uh`wV2R;F3jWhy-F`(Fq#b>U5@tW&_F}$Cks! zU}n^wN8fklOZ6L;KA<8u>hqbh+szklTL8!dEl|WYgO54o=rI#>p#i_>>WTRpnd8@O zbs)@P6;zVcHjM-FvrWA_JO(gKJK`ee#c>T{mb)EsXe1!~C;yf37Dq z>KsX6%+$+_V#oGnFYuvG$~w@zw%`ye?^kdNh}_|%$D6DdfL~g;2<9xC6q8|no9;hN zC(IK-TYig*WQKhIQdF2cPvBGFqp;Q-c>cFG_Kj@|r;GBY7X^MOs@GUrxof}&Jak9F zHr$MjWML62+y2kF6nngbS z%<{wHX)EgZOGmGbyUJ%2H`ZhyobXjg`+-4CZ+AXMR&`82jw4E_KyE}k!RJuvv-3cG z!M?TM?L5Y9(o>#4pExzzIB|KxsTAi6%fH-$;74mDE%*C(w`Je37Ytt-%NlvDOR7U3 zzQ^i!;p;ufmzRV0I-DuV2YK&u1{ z*4oig0NTp{Wf^_S%=iJHbvsM|RQnZ3rw1ji77du43#Y3K>J>dxT z>?4@iO1wbh)nDX;cJDVYu$+`zfv^vu-9_?_mB*-q8r0wKA5=_1IJPq-d-mk_jnI9j zceh9=IV@ajc4&-YtTgpo+A0~i5XDM9kqmwWNRC#gIECbPiXMk7fiM1OV3NFyj(aH~ z9P)g0=LeIjP_^&~ARL{5Zt7>Ke-u1~_SK%LpgseNl@cx zcB!g2@0I?O0ur)?C)>d99Um;?RvQD}^=^~UsV!AlB%fXBGmo3P$emMQ3bb@|Ow{o$ zdLH}GABc|IUA&%HF{!rA#F6*iraU7R6ZV^Nw4UiTY?Hgo|HjGtnH9^an;IPb4Kygt z7;FWaZv!V=37`Yr{Go&<6cFDu8nlMp5Xa@$_6xY zMGY018)Qv;OWuX6=Zl`3@7P~~>iPE>u)sua-Y&z$8?Hjdj5tpPK%cRU{mDOt`w7_a z0KmBdy-x#*^mk&QpZ1kuoa>rW(+`xdv=uh_G_DE1*Z*pzqj862ufpSxEFR zJc)}uujMAoG-1R=0hq33s36Y!dl^DfYir09(*4-yXM5K%NF1af7dLl*TEBHi`O2=V zKoRU3xhf0i0b)M4mA|zn$y9J1PK;gcz-iAb8zUZxjv;xe_ z>sCEz62KrfDZKH`VFM4Ou%S|#O)N4-7M3E=Xjqspv|X;_C@ZT`Uv{(_+2K(W1@H_K zNXP}-+j_wF<+a5#icK6ZbazO|(|!ZoH0UE-i|PM{TERov-O%Tqg$Z`yyLq)kldkx9 z8A;8sv(V9UdJ%oF$~X`Q=Jim8yt@qoE=zZ1b-+n*A2VXM_IPT$go%`oKm}XeT8+Z- zb*I}&Tyuy#$e)fsE54Yv?DFsG$_*Pgc>&If(%uXCEV6ArktTp}p+5eDyhbMeb2QuS zA%*=5nn^*+>`=tV#or^D-Wt}#MH3~igAq>u+TCy%ppjQ0Ava^WNJvX^Fc%xV4%?9e0#4|h$)CzRueY`z)pMvk29+PNsI*mogme#tmB4(1CZk;noVSwe zVC+S5%N`Vt>tQ{kwdZuYI13(M?I-Bs1x_27j(gAXgbIu4k=}Z$-ow@P>FMp8*V0wa z91#w{ZvV3A5bO~3Y@lYt*w%--5()xK^|f=qVE8hyq`|d82hapyz94 z!?`q^8bw4hykYiM<7*#xG(6x)S<*L_Z@4;ZYzd9b<;i(%)b`AEB*3wWj2}NenxgoX zGT92q5WiOc>eg<|`@9VX4W}~U`8yiV5@6LxsO9!FcO86HrH@ zQjj7K4&F%8n!dk?Brln&N*#4pD@&wET8;>n9E}LYWk5{PzJnhQy;CaE0I8e0`iHGi zZFldEc|CT|D?gHOkD@m~%ES&Fwm9h;lAkke#ZS9?zrm*#&Mjz*Pd(6 zx!!!{^Xxp37P?+xr~a+e3o3ZuUiJBTKP&cr50jvEK(h3;*W-PIFFE|Cj5G#S1=0@M z$2AQ?*}r}|i?*Qi|8W)^Ac@a+8fRZ;x`{ykp3Z|~ZEnw)7mu^@^wx%EwL?8AlVEZ& zT}_;-*LTMF-I$g}-F_~xLqANLUHjI-kqP_cI$(2Ge_(mbc7-8LWnAgWgFa%Ri7cVAvY z(0KmZ%|8ZGZhsOs|B&YGDf8HtN>z-u@;73Jbf!f!2u#u@S_R;4*dZNi2V&bd_1oiG zr%EuOUzDS$QMS=wOa`O4PhU3iyHu4%YsiHUGrVB6&-0B|3m{~un;5)-0qXoTL`xD1 zOHXZAh5i_voI8i==Trg?S32f79aFgh^{PSt(C;mr`I?s`KhJlFr+Oy<>G-z3o>NQy zIk?a!0OCk6-3_(o{gc3x`3&Y@0@xjRUfyX=cu<}HJuwEHi-!?_L(P7?hy4$y3eOLd zvxbzMKe!OqaERxK6cE$b#4c-O_q|eK9kmFyi z|9Jd;1!?=s%$1|r8(2;O72MjTsDPWjF?lEa6W_@_-|ZLS;fe*ebZzMf#P29}f#k>uZWR-hy``O_bs@uN%Ai;i)?6+Or>LAaY}t&ZEbKAf!+Jc1 z6BC6`xV+&!3CHAQ0Xa-Yowdq%>2I_y!Q`eiFI1Y^3s?{m@79n>EEGrF?0am3TC2U} zq3+0O=ww&g-Pwvtz>9YcPfyE#42_1b1nVQ^MHF->{v}M~OYzzVAFGNnZ8-^!^Clfk z{9a1to-PYcZKd^6Uq%t*;e{uxU+zbn4H1}Y!&`#-d!FE+lG`?|gUbjn++_4a%*T+o z^|$rdFGs);(ave6PJzS$mnJ8NoBjDVxWwx_Ahy%>tIy?oO1jc-$R2*GKw;v@WSuW! zn)tBW-O5o*VHS;;al9b;o6{rO^xVtn&59yD4ok~bajd>ZnwZtbVkFWsbZ44#LZC@)XQSTfZ@!~Kj1SM==}x$D#*x^R?&Zr4e06cszk5C0F%9&Q;UV*EZV}W5&aZBtI{ylAIo`rk7_V zi_2O2V)172Dkv2#FfCayYBzS}*i_y^?`^;`hZ=JPI7NfX(t+#zA6WHn%ngX0f0ht_|_rnT1)W?xLxtg(S2iXgPDIq``q>Cazj_|nXt>$^L z)AiiL_3$m)#TxAZoY!g&B*zVoUA#13EwZyNjGSY`187_od;`=Bcji2V(yx(Wx&!vOO?`j*mh3urUEklQ_>!wy=W2 z%P8Zz^&$}D5WCaQyK96wF2&LltRN7a(o0>5BILiwW`N1d8!c?BHt+YL%OJ74pOY4^ z!PC{{kyboH(|POM{94-6IXKyBwq7zDVs5*gKh!KL^vP}GLJ)jqb=>5$|M&TPl&$v$ zm%ujm=$98=usk!hUZ~crMh$Z&$HEzzehS@jtUSVs`CSb3yCLeTgn-VQs>DVjt{}RA zDvjGFA=9|p2oudteJnz2abZbGHc$Yg_{Vc-CSA`DARHWA4_mknUC(<&?`oI$IK=bl zvTvfk3S{{FQtUYpDrt6aRE!TMQ|XpLkXL>DvgryBX-VH<%d7 zleeSIZ)cqwgkV7gd+BK2zKuyM&CCqT<|8=~u-_!w{zFcbt?;aNS+m-72V2CE_h#MG z+hNwrHtPYE>hl_z7iUIY()^@LGr4L9_sgQU&0&TRKfd^~T(T|@)`R0-8_G=d3;RWa zN+4E5QEaNV)fFpHB}(1ZOuY0)f*$dc-*A|bf<0VM`VXK*ZrtE3a(L_J{ssV)S(1P7 zQsOZGw7+8(7xdcZDXLmrtE=~J_nrwIQ-4lAglU zRB?>ojh9-2GvaUzQ)+K@FVy;Y+X_|>jzu1<3ilU49qVGs`4Y$g5r4FK)~wns1W7hf zpP}9A6j{=!e93Mmgqyts)O)3Rl0W+C>8Lcn zdor15=Xur#P@~NU+YKST3~DL{qGa-L$ZEZGocv^W;efCvVOVKC@9YXX3*Lki8myuR zCqV7xkfXe7J&DY=>-ofd6E8|IP3pbKiih*6!7v37H$y7#AKXpRT@!S+b3?E$%`$l#pf`iy7!!%uc( zyMZU?!Gr6j*Saxpe^&xz$2n6WadXbbhbf0=2Pd0Apd}{u#CAR98@~?B+3lpK+A+Po z4OBe*r!uIzIY~)=ggn8qU)}Zw{nkwy-Mt7*#uZPIWy_0q5i)eZ9pw3`hkhR%TJ1SE zbZd1ReLAXmb@;0cxi3+i;6c^s(XNlwYPJFf{KGgV6LnppyG{5~c&k*A%CeCn_)s`T zl^)(iap!&qtm>L)D_7bS)~GuIyxAgt`LwHV%*T!&TeEGsqEH4w?7e*=CYSDHpno-s zM%#8FOec2A*XOi7JT)vL*|51WB~39$`MoC#!egvZ+2-2KuWWl0W%;{B-By`-jG

    - diff --git a/bookmarks/templates/bookmarks/search.html b/bookmarks/templates/bookmarks/search.html index 06d9f7b8..c9e5868a 100644 --- a/bookmarks/templates/bookmarks/search.html +++ b/bookmarks/templates/bookmarks/search.html @@ -77,7 +77,7 @@ {# Replace search input with auto-complete component #} \ No newline at end of file diff --git a/bookmarks/templates/settings/general.html b/bookmarks/templates/settings/general.html index aeb7c001..ec01aea8 100644 --- a/bookmarks/templates/settings/general.html +++ b/bookmarks/templates/settings/general.html @@ -19,7 +19,7 @@

    Profile

    Change password

    -
    + {% csrf_token %}
    @@ -247,7 +247,7 @@

    Profile

    {% if global_settings_form %}

    Global settings

    - + {% csrf_token %}
    @@ -266,6 +266,16 @@

    Global settings

    a dedicated user for this purpose. By default, a standard profile with fixed settings is used.
    +
    + +
    + Prefetches internal links when hovering over them. This can improve the perceived performance when + navigating application, but also increases the load on the server as well as bandwidth usage. +
    +
    @@ -306,7 +316,7 @@

    Import

    Export

    Export all bookmarks in Netscape HTML format.

    - Download (.html) + Download (.html) {% if export_error %}

    @@ -344,35 +354,37 @@

    About

    {% endblock %} diff --git a/bookmarks/templates/settings/integrations.html b/bookmarks/templates/settings/integrations.html index 55bc8365..0c925bfc 100644 --- a/bookmarks/templates/settings/integrations.html +++ b/bookmarks/templates/settings/integrations.html @@ -52,10 +52,10 @@

    REST API

    RSS Feeds

    The following URLs provide RSS feeds for your bookmarks:

    @@ -80,7 +80,7 @@

    RSS Feeds

    credential. Any party with access to these URLs can read all your bookmarks. If you think that a URL was compromised you can delete the feed token for your user in the admin panel. + target="_blank" href="{% url 'admin:bookmarks_feedtoken_changelist' %}">admin panel. After deleting the feed token, new URLs will be generated when you reload this settings page.

    diff --git a/bookmarks/tests/test_bookmark_archived_view_performance.py b/bookmarks/tests/test_bookmark_archived_view_performance.py index 81042b6e..ea1f0af3 100644 --- a/bookmarks/tests/test_bookmark_archived_view_performance.py +++ b/bookmarks/tests/test_bookmark_archived_view_performance.py @@ -1,10 +1,10 @@ -from django.contrib.auth.models import User +from django.db import connections +from django.db.utils import DEFAULT_DB_ALIAS from django.test import TransactionTestCase from django.test.utils import CaptureQueriesContext from django.urls import reverse -from django.db import connections -from django.db.utils import DEFAULT_DB_ALIAS +from bookmarks.models import GlobalSettings from bookmarks.tests.helpers import BookmarkFactoryMixin @@ -20,9 +20,12 @@ def get_connection(self): return connections[DEFAULT_DB_ALIAS] def test_should_not_increase_number_of_queries_per_bookmark(self): + # create global settings + GlobalSettings.get() + # create initial bookmarks num_initial_bookmarks = 10 - for index in range(num_initial_bookmarks): + for _ in range(num_initial_bookmarks): self.setup_bookmark(user=self.user, is_archived=True) # capture number of queries @@ -37,7 +40,7 @@ def test_should_not_increase_number_of_queries_per_bookmark(self): # add more bookmarks num_additional_bookmarks = 10 - for index in range(num_additional_bookmarks): + for _ in range(num_additional_bookmarks): self.setup_bookmark(user=self.user, is_archived=True) # assert num queries doesn't increase diff --git a/bookmarks/tests/test_bookmark_index_view_performance.py b/bookmarks/tests/test_bookmark_index_view_performance.py index ac508951..8f84469a 100644 --- a/bookmarks/tests/test_bookmark_index_view_performance.py +++ b/bookmarks/tests/test_bookmark_index_view_performance.py @@ -1,10 +1,10 @@ -from django.contrib.auth.models import User +from django.db import connections +from django.db.utils import DEFAULT_DB_ALIAS from django.test import TransactionTestCase from django.test.utils import CaptureQueriesContext from django.urls import reverse -from django.db import connections -from django.db.utils import DEFAULT_DB_ALIAS +from bookmarks.models import GlobalSettings from bookmarks.tests.helpers import BookmarkFactoryMixin @@ -18,9 +18,12 @@ def get_connection(self): return connections[DEFAULT_DB_ALIAS] def test_should_not_increase_number_of_queries_per_bookmark(self): + # create global settings + GlobalSettings.get() + # create initial bookmarks num_initial_bookmarks = 10 - for index in range(num_initial_bookmarks): + for _ in range(num_initial_bookmarks): self.setup_bookmark(user=self.user) # capture number of queries @@ -35,7 +38,7 @@ def test_should_not_increase_number_of_queries_per_bookmark(self): # add more bookmarks num_additional_bookmarks = 10 - for index in range(num_additional_bookmarks): + for _ in range(num_additional_bookmarks): self.setup_bookmark(user=self.user) # assert num queries doesn't increase diff --git a/bookmarks/tests/test_bookmark_shared_view_performance.py b/bookmarks/tests/test_bookmark_shared_view_performance.py index 05ce95f2..872340d4 100644 --- a/bookmarks/tests/test_bookmark_shared_view_performance.py +++ b/bookmarks/tests/test_bookmark_shared_view_performance.py @@ -1,10 +1,10 @@ -from django.contrib.auth.models import User +from django.db import connections +from django.db.utils import DEFAULT_DB_ALIAS from django.test import TransactionTestCase from django.test.utils import CaptureQueriesContext from django.urls import reverse -from django.db import connections -from django.db.utils import DEFAULT_DB_ALIAS +from bookmarks.models import GlobalSettings from bookmarks.tests.helpers import BookmarkFactoryMixin @@ -18,9 +18,12 @@ def get_connection(self): return connections[DEFAULT_DB_ALIAS] def test_should_not_increase_number_of_queries_per_bookmark(self): + # create global settings + GlobalSettings.get() + # create initial users and bookmarks num_initial_bookmarks = 10 - for index in range(num_initial_bookmarks): + for _ in range(num_initial_bookmarks): user = self.setup_user(enable_sharing=True) self.setup_bookmark(user=user, shared=True) @@ -36,7 +39,7 @@ def test_should_not_increase_number_of_queries_per_bookmark(self): # add more users and bookmarks num_additional_bookmarks = 10 - for index in range(num_additional_bookmarks): + for _ in range(num_additional_bookmarks): user = self.setup_user(enable_sharing=True) self.setup_bookmark(user=user, shared=True) diff --git a/bookmarks/tests/test_bookmarks_api_performance.py b/bookmarks/tests/test_bookmarks_api_performance.py index 0c8d26ec..61572d35 100644 --- a/bookmarks/tests/test_bookmarks_api_performance.py +++ b/bookmarks/tests/test_bookmarks_api_performance.py @@ -5,6 +5,7 @@ from rest_framework import status from rest_framework.authtoken.models import Token +from bookmarks.models import GlobalSettings from bookmarks.tests.helpers import LinkdingApiTestCase, BookmarkFactoryMixin @@ -16,13 +17,16 @@ def setUp(self) -> None: )[0] self.client.credentials(HTTP_AUTHORIZATION="Token " + self.api_token.key) + # create global settings + GlobalSettings.get() + def get_connection(self): return connections[DEFAULT_DB_ALIAS] def test_list_bookmarks_max_queries(self): # set up some bookmarks with associated tags num_initial_bookmarks = 10 - for index in range(num_initial_bookmarks): + for _ in range(num_initial_bookmarks): self.setup_bookmark(tags=[self.setup_tag()]) # capture number of queries @@ -40,7 +44,7 @@ def test_list_bookmarks_max_queries(self): def test_list_archived_bookmarks_max_queries(self): # set up some bookmarks with associated tags num_initial_bookmarks = 10 - for index in range(num_initial_bookmarks): + for _ in range(num_initial_bookmarks): self.setup_bookmark(is_archived=True, tags=[self.setup_tag()]) # capture number of queries @@ -59,7 +63,7 @@ def test_list_shared_bookmarks_max_queries(self): # set up some bookmarks with associated tags share_user = self.setup_user(enable_sharing=True) num_initial_bookmarks = 10 - for index in range(num_initial_bookmarks): + for _ in range(num_initial_bookmarks): self.setup_bookmark(user=share_user, shared=True, tags=[self.setup_tag()]) # capture number of queries diff --git a/bookmarks/tests/test_bookmarks_list_template.py b/bookmarks/tests/test_bookmarks_list_template.py index 86d1c7e6..c86313e2 100644 --- a/bookmarks/tests/test_bookmarks_list_template.py +++ b/bookmarks/tests/test_bookmarks_list_template.py @@ -9,7 +9,7 @@ from django.urls import reverse from django.utils import timezone, formats -from bookmarks.middlewares import UserProfileMiddleware +from bookmarks.middlewares import LinkdingMiddleware from bookmarks.models import Bookmark, UserProfile, User from bookmarks.tests.helpers import BookmarkFactoryMixin, HtmlTestMixin from bookmarks.views.partials import contexts @@ -74,6 +74,7 @@ def assertViewLinkCount( f""" View """, html, @@ -270,7 +271,7 @@ def render_template( rf = RequestFactory() request = rf.get(url) request.user = user or self.get_or_create_test_user() - middleware = UserProfileMiddleware(lambda r: HttpResponse()) + middleware = LinkdingMiddleware(lambda r: HttpResponse()) middleware(request) bookmark_list_context = context_type(request) diff --git a/bookmarks/tests/test_feeds_performance.py b/bookmarks/tests/test_feeds_performance.py index 97941a9d..3aebebc1 100644 --- a/bookmarks/tests/test_feeds_performance.py +++ b/bookmarks/tests/test_feeds_performance.py @@ -4,7 +4,7 @@ from django.test.utils import CaptureQueriesContext from django.urls import reverse -from bookmarks.models import FeedToken +from bookmarks.models import FeedToken, GlobalSettings from bookmarks.tests.helpers import BookmarkFactoryMixin @@ -15,13 +15,16 @@ def setUp(self) -> None: self.client.force_login(user) self.token = FeedToken.objects.get_or_create(user=user)[0] + # create global settings + GlobalSettings.get() + def get_connection(self): return connections[DEFAULT_DB_ALIAS] def test_all_max_queries(self): # set up some bookmarks with associated tags num_initial_bookmarks = 10 - for index in range(num_initial_bookmarks): + for _ in range(num_initial_bookmarks): self.setup_bookmark(tags=[self.setup_tag()]) # capture number of queries diff --git a/bookmarks/tests/test_nav_menu.py b/bookmarks/tests/test_layout.py similarity index 52% rename from bookmarks/tests/test_nav_menu.py rename to bookmarks/tests/test_layout.py index e6ce5d67..e7fb2636 100644 --- a/bookmarks/tests/test_nav_menu.py +++ b/bookmarks/tests/test_layout.py @@ -1,16 +1,17 @@ from django.test import TestCase from django.urls import reverse +from bookmarks.models import GlobalSettings from bookmarks.tests.helpers import BookmarkFactoryMixin -class NavMenuTestCase(TestCase, BookmarkFactoryMixin): +class LayoutTestCase(TestCase, BookmarkFactoryMixin): def setUp(self) -> None: user = self.get_or_create_test_user() self.client.force_login(user) - def test_should_respect_share_profile_setting(self): + def test_nav_menu_should_respect_share_profile_setting(self): self.user.profile.enable_sharing = False self.user.profile.save() response = self.client.get(reverse("bookmarks:index")) @@ -36,3 +37,29 @@ def test_should_respect_share_profile_setting(self): html, count=2, ) + + def test_metadata_should_respect_prefetch_links_setting(self): + settings = GlobalSettings.get() + settings.enable_link_prefetch = False + settings.save() + + response = self.client.get(reverse("bookmarks:index")) + html = response.content.decode() + + self.assertInHTML( + '', + html, + count=1, + ) + + settings.enable_link_prefetch = True + settings.save() + + response = self.client.get(reverse("bookmarks:index")) + html = response.content.decode() + + self.assertInHTML( + '', + html, + count=0, + ) diff --git a/bookmarks/tests/test_user_profile_middleware.py b/bookmarks/tests/test_linkding_middleware.py similarity index 96% rename from bookmarks/tests/test_user_profile_middleware.py rename to bookmarks/tests/test_linkding_middleware.py index 1713df00..9280b4ee 100644 --- a/bookmarks/tests/test_user_profile_middleware.py +++ b/bookmarks/tests/test_linkding_middleware.py @@ -6,7 +6,7 @@ from bookmarks.middlewares import standard_profile -class UserProfileMiddlewareTestCase(TestCase, BookmarkFactoryMixin): +class LinkdingMiddlewareTestCase(TestCase, BookmarkFactoryMixin): def test_unauthenticated_user_should_use_standard_profile_by_default(self): response = self.client.get(reverse("login")) diff --git a/bookmarks/tests/test_settings_general_view.py b/bookmarks/tests/test_settings_general_view.py index 0f82726a..c9c2bd9a 100644 --- a/bookmarks/tests/test_settings_general_view.py +++ b/bookmarks/tests/test_settings_general_view.py @@ -79,6 +79,13 @@ def test_should_check_authentication(self): reverse("login") + "?next=" + reverse("bookmarks:settings.general"), ) + response = self.client.get(reverse("bookmarks:settings.update"), follow=True) + + self.assertRedirects( + response, + reverse("login") + "?next=" + reverse("bookmarks:settings.update"), + ) + def test_update_profile(self): form_data = { "update_profile": "", @@ -105,7 +112,9 @@ def test_update_profile(self): "custom_css": "body { background-color: #000; }", "auto_tagging_rules": "example.com tag", } - response = self.client.post(reverse("bookmarks:settings.general"), form_data) + response = self.client.post( + reverse("bookmarks:settings.update"), form_data, follow=True + ) html = response.content.decode() self.user.profile.refresh_from_db() @@ -179,7 +188,9 @@ def test_update_profile_should_not_be_called_without_respective_form_action(self form_data = { "theme": UserProfile.THEME_DARK, } - response = self.client.post(reverse("bookmarks:settings.general"), form_data) + response = self.client.post( + reverse("bookmarks:settings.update"), form_data, follow=True + ) html = response.content.decode() self.user.profile.refresh_from_db() @@ -199,14 +210,14 @@ def test_enable_favicons_should_schedule_icon_update(self): "enable_favicons": True, } ) - self.client.post(reverse("bookmarks:settings.general"), form_data) + self.client.post(reverse("bookmarks:settings.update"), form_data) mock_schedule_bookmarks_without_favicons.assert_called_once_with(self.user) # No update scheduled if favicons are already enabled mock_schedule_bookmarks_without_favicons.reset_mock() - self.client.post(reverse("bookmarks:settings.general"), form_data) + self.client.post(reverse("bookmarks:settings.update"), form_data) mock_schedule_bookmarks_without_favicons.assert_not_called() @@ -217,7 +228,7 @@ def test_enable_favicons_should_schedule_icon_update(self): } ) - self.client.post(reverse("bookmarks:settings.general"), form_data) + self.client.post(reverse("bookmarks:settings.update"), form_data) mock_schedule_bookmarks_without_favicons.assert_not_called() @@ -229,7 +240,7 @@ def test_refresh_favicons(self): "refresh_favicons": "", } response = self.client.post( - reverse("bookmarks:settings.general"), form_data + reverse("bookmarks:settings.update"), form_data, follow=True ) html = response.content.decode() @@ -243,9 +254,7 @@ def test_refresh_favicons_should_not_be_called_without_respective_form_action(se tasks, "schedule_refresh_favicons" ) as mock_schedule_refresh_favicons: form_data = {} - response = self.client.post( - reverse("bookmarks:settings.general"), form_data - ) + response = self.client.post(reverse("bookmarks:settings.update"), form_data) html = response.content.decode() mock_schedule_refresh_favicons.assert_not_called() @@ -315,14 +324,14 @@ def test_enable_preview_image_should_schedule_preview_update(self): "enable_preview_images": True, } ) - self.client.post(reverse("bookmarks:settings.general"), form_data) + self.client.post(reverse("bookmarks:settings.update"), form_data) mock_schedule_bookmarks_without_previews.assert_called_once_with(self.user) # No update scheduled if favicons are already enabled mock_schedule_bookmarks_without_previews.reset_mock() - self.client.post(reverse("bookmarks:settings.general"), form_data) + self.client.post(reverse("bookmarks:settings.update"), form_data) mock_schedule_bookmarks_without_previews.assert_not_called() @@ -333,7 +342,7 @@ def test_enable_preview_image_should_schedule_preview_update(self): } ) - self.client.post(reverse("bookmarks:settings.general"), form_data) + self.client.post(reverse("bookmarks:settings.update"), form_data) mock_schedule_bookmarks_without_previews.assert_not_called() @@ -422,10 +431,11 @@ def test_create_missing_html_snapshots(self): "create_missing_html_snapshots": "", } response = self.client.post( - reverse("bookmarks:settings.general"), form_data + reverse("bookmarks:settings.update"), form_data, follow=True ) html = response.content.decode() + self.assertEqual(response.status_code, 200) mock_create_missing_html_snapshots.assert_called_once() self.assertSuccessMessage( html, "Queued 5 missing snapshots. This may take a while..." @@ -441,10 +451,11 @@ def test_create_missing_html_snapshots_no_missing_snapshots(self): "create_missing_html_snapshots": "", } response = self.client.post( - reverse("bookmarks:settings.general"), form_data + reverse("bookmarks:settings.update"), form_data, follow=True ) html = response.content.decode() + self.assertEqual(response.status_code, 200) mock_create_missing_html_snapshots.assert_called_once() self.assertSuccessMessage(html, "No missing snapshots found.") @@ -457,10 +468,11 @@ def test_create_missing_html_snapshots_should_not_be_called_without_respective_f mock_create_missing_html_snapshots.return_value = 5 form_data = {} response = self.client.post( - reverse("bookmarks:settings.general"), form_data + reverse("bookmarks:settings.update"), form_data, follow=True ) html = response.content.decode() + self.assertEqual(response.status_code, 200) mock_create_missing_html_snapshots.assert_not_called() self.assertSuccessMessage( html, "Queued 5 missing snapshots. This may take a while...", count=0 @@ -477,7 +489,9 @@ def test_update_global_settings(self): "landing_page": GlobalSettings.LANDING_PAGE_SHARED_BOOKMARKS, "guest_profile_user": selectable_user.id, } - response = self.client.post(reverse("bookmarks:settings.general"), form_data) + response = self.client.post( + reverse("bookmarks:settings.update"), form_data, follow=True + ) self.assertEqual(response.status_code, 200) self.assertSuccessMessage(response.content.decode(), "Global settings updated") @@ -491,7 +505,9 @@ def test_update_global_settings(self): "landing_page": GlobalSettings.LANDING_PAGE_LOGIN, "guest_profile_user": "", } - response = self.client.post(reverse("bookmarks:settings.general"), form_data) + response = self.client.post( + reverse("bookmarks:settings.update"), form_data, follow=True + ) self.assertEqual(response.status_code, 200) self.assertSuccessMessage(response.content.decode(), "Global settings updated") @@ -509,7 +525,9 @@ def test_update_global_settings_should_not_be_called_without_respective_form_act form_data = { "landing_page": GlobalSettings.LANDING_PAGE_SHARED_BOOKMARKS, } - response = self.client.post(reverse("bookmarks:settings.general"), form_data) + response = self.client.post( + reverse("bookmarks:settings.update"), form_data, follow=True + ) self.assertEqual(response.status_code, 200) self.assertSuccessMessage( response.content.decode(), "Global settings updated", count=0 @@ -520,7 +538,7 @@ def test_update_global_settings_checks_for_superuser(self): "update_global_settings": "", "landing_page": GlobalSettings.LANDING_PAGE_SHARED_BOOKMARKS, } - response = self.client.post(reverse("bookmarks:settings.general"), form_data) + response = self.client.post(reverse("bookmarks:settings.update"), form_data) self.assertEqual(response.status_code, 403) def test_global_settings_only_visible_for_superuser(self): diff --git a/bookmarks/tests/test_settings_integrations_view.py b/bookmarks/tests/test_settings_integrations_view.py index 8098a960..5ada01e9 100644 --- a/bookmarks/tests/test_settings_integrations_view.py +++ b/bookmarks/tests/test_settings_integrations_view.py @@ -68,17 +68,18 @@ def test_should_display_feed_urls(self): token = FeedToken.objects.first() self.assertInHTML( - f'All bookmarks', html + f'All bookmarks', + html, ) self.assertInHTML( - f'Unread bookmarks', + f'Unread bookmarks', html, ) self.assertInHTML( - f'Shared bookmarks', + f'Shared bookmarks', html, ) self.assertInHTML( - f'Public shared bookmarks', + 'Public shared bookmarks', html, ) diff --git a/bookmarks/tests/test_tag_cloud_template.py b/bookmarks/tests/test_tag_cloud_template.py index 4ac807ea..d0e0f0d3 100644 --- a/bookmarks/tests/test_tag_cloud_template.py +++ b/bookmarks/tests/test_tag_cloud_template.py @@ -5,7 +5,7 @@ from django.template import Template, RequestContext from django.test import TestCase, RequestFactory -from bookmarks.middlewares import UserProfileMiddleware +from bookmarks.middlewares import LinkdingMiddleware from bookmarks.models import UserProfile from bookmarks.tests.helpers import BookmarkFactoryMixin, HtmlTestMixin from bookmarks.views.partials import contexts @@ -21,7 +21,7 @@ def render_template( rf = RequestFactory() request = rf.get(url) request.user = user or self.get_or_create_test_user() - middleware = UserProfileMiddleware(lambda r: HttpResponse()) + middleware = LinkdingMiddleware(lambda r: HttpResponse()) middleware(request) tag_cloud_context = context_type(request) diff --git a/bookmarks/urls.py b/bookmarks/urls.py index fd855e38..74d082f0 100644 --- a/bookmarks/urls.py +++ b/bookmarks/urls.py @@ -106,6 +106,7 @@ # Settings path("settings", views.settings.general, name="settings.index"), path("settings/general", views.settings.general, name="settings.general"), + path("settings/update", views.settings.update, name="settings.update"), path( "settings/integrations", views.settings.integrations, diff --git a/bookmarks/views/bookmarks.py b/bookmarks/views/bookmarks.py index 2bcb653f..0e882813 100644 --- a/bookmarks/views/bookmarks.py +++ b/bookmarks/views/bookmarks.py @@ -189,6 +189,7 @@ def convert_tag_string(tag_string: str): @login_required def new(request): + status = 200 initial_url = request.GET.get("url") initial_title = request.GET.get("title") initial_description = request.GET.get("description") @@ -207,6 +208,8 @@ def new(request): return HttpResponseRedirect(reverse("bookmarks:close")) else: return HttpResponseRedirect(reverse("bookmarks:index")) + else: + status = 422 else: form = BookmarkForm() if initial_url: @@ -228,7 +231,7 @@ def new(request): "return_url": reverse("bookmarks:index"), } - return render(request, "bookmarks/new.html", context) + return render(request, "bookmarks/new.html", context, status=status) @login_required diff --git a/bookmarks/views/root.py b/bookmarks/views/root.py index 8b728466..71b421b4 100644 --- a/bookmarks/views/root.py +++ b/bookmarks/views/root.py @@ -7,7 +7,7 @@ def root(request): # Redirect unauthenticated users to the configured landing page if not request.user.is_authenticated: - settings = GlobalSettings.get() + settings = request.global_settings if settings.landing_page == GlobalSettings.LANDING_PAGE_SHARED_BOOKMARKS: return HttpResponseRedirect(reverse("bookmarks:shared")) diff --git a/bookmarks/views/settings.py b/bookmarks/views/settings.py index 3c8a1f58..3566d85f 100644 --- a/bookmarks/views/settings.py +++ b/bookmarks/views/settings.py @@ -29,41 +29,19 @@ @login_required def general(request): - profile_form = None - global_settings_form = None enable_refresh_favicons = django_settings.LD_ENABLE_REFRESH_FAVICONS has_snapshot_support = django_settings.LD_ENABLE_SNAPSHOTS success_message = _find_message_with_tag( - messages.get_messages(request), "bookmark_import_success" + messages.get_messages(request), "settings_success_message" ) error_message = _find_message_with_tag( - messages.get_messages(request), "bookmark_import_errors" + messages.get_messages(request), "settings_error_message" ) version_info = get_version_info(get_ttl_hash()) - if request.method == "POST": - if "update_profile" in request.POST: - profile_form = update_profile(request) - success_message = "Profile updated" - if "update_global_settings" in request.POST: - global_settings_form = update_global_settings(request) - success_message = "Global settings updated" - if "refresh_favicons" in request.POST: - tasks.schedule_refresh_favicons(request.user) - success_message = "Scheduled favicon update. This may take a while..." - if "create_missing_html_snapshots" in request.POST: - count = tasks.create_missing_html_snapshots(request.user) - if count > 0: - success_message = ( - f"Queued {count} missing snapshots. This may take a while..." - ) - else: - success_message = "No missing snapshots found." - - if not profile_form: - profile_form = UserProfileForm(instance=request.user_profile) - - if request.user.is_superuser and not global_settings_form: + profile_form = UserProfileForm(instance=request.user_profile) + global_settings_form = None + if request.user.is_superuser: global_settings_form = GlobalSettingsForm(instance=GlobalSettings.get()) return render( @@ -81,6 +59,40 @@ def general(request): ) +@login_required +def update(request): + if request.method == "POST": + if "update_profile" in request.POST: + update_profile(request) + messages.success(request, "Profile updated", "settings_success_message") + if "update_global_settings" in request.POST: + update_global_settings(request) + messages.success( + request, "Global settings updated", "settings_success_message" + ) + if "refresh_favicons" in request.POST: + tasks.schedule_refresh_favicons(request.user) + messages.success( + request, + "Scheduled favicon update. This may take a while...", + "settings_success_message", + ) + if "create_missing_html_snapshots" in request.POST: + count = tasks.create_missing_html_snapshots(request.user) + if count > 0: + messages.success( + request, + f"Queued {count} missing snapshots. This may take a while...", + "settings_success_message", + ) + else: + messages.success( + request, "No missing snapshots found.", "settings_success_message" + ) + + return HttpResponseRedirect(reverse("bookmarks:settings.general")) + + def update_profile(request): user = request.user profile = user.profile @@ -178,7 +190,7 @@ def bookmark_import(request): if import_file is None: messages.error( - request, "Please select a file to import.", "bookmark_import_errors" + request, "Please select a file to import.", "settings_error_message" ) return HttpResponseRedirect(reverse("bookmarks:settings.general")) @@ -186,21 +198,20 @@ def bookmark_import(request): content = import_file.read().decode() result = importer.import_netscape_html(content, request.user, import_options) success_msg = str(result.success) + " bookmarks were successfully imported." - messages.success(request, success_msg, "bookmark_import_success") + messages.success(request, success_msg, "settings_success_message") if result.failed > 0: err_msg = ( str(result.failed) + " bookmarks could not be imported. Please check the logs for more details." ) - messages.error(request, err_msg, "bookmark_import_errors") + messages.error(request, err_msg, "settings_error_message") except: logging.exception("Unexpected error during bookmark import") messages.error( request, "An error occurred during bookmark import.", - "bookmark_import_errors", + "settings_error_message", ) - pass return HttpResponseRedirect(reverse("bookmarks:settings.general")) diff --git a/package-lock.json b/package-lock.json index 0037f368..44a4a28d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,15 @@ { "name": "linkding", - "version": "1.31.1", + "version": "1.32.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "linkding", - "version": "1.31.1", + "version": "1.32.0", "license": "MIT", "dependencies": { + "@hotwired/turbo": "^8.0.6", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-terser": "^0.4.4", "@rollup/wasm-node": "^4.13.0", @@ -79,6 +80,14 @@ "postcss-selector-parser": "^6.1.0" } }, + "node_modules/@hotwired/turbo": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@hotwired/turbo/-/turbo-8.0.6.tgz", + "integrity": "sha512-mwZRfwcJ4yatUnW5tcCY9NDvo0kjuuLQF/y8pXigHhS+c/JY/ccNluVyuERR9Sraqx0qdpenkO3pNeSWz1mE3w==", + "engines": { + "node": ">= 14" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", diff --git a/package.json b/package.json index 883f1bff..4cf1376f 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ }, "homepage": "https://github.com/sissbruecker/linkding#readme", "dependencies": { + "@hotwired/turbo": "^8.0.6", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-terser": "^0.4.4", "@rollup/wasm-node": "^4.13.0", diff --git a/siteroot/settings/base.py b/siteroot/settings/base.py index 12d04476..b701488f 100644 --- a/siteroot/settings/base.py +++ b/siteroot/settings/base.py @@ -52,7 +52,7 @@ "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", - "bookmarks.middlewares.UserProfileMiddleware", + "bookmarks.middlewares.LinkdingMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", "django.middleware.locale.LocaleMiddleware", From 76c65566cf60a6a526bb68e1a1f630b7c599bb6a Mon Sep 17 00:00:00 2001 From: Leonhard Markert Date: Sat, 14 Sep 2024 09:37:03 +0000 Subject: [PATCH 03/12] Rename "SingeFileError" to "SingleFileError" (#823) --- bookmarks/services/singlefile.py | 10 +++++----- bookmarks/tests/test_bookmarks_tasks.py | 2 +- bookmarks/tests/test_singlefile_service.py | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bookmarks/services/singlefile.py b/bookmarks/services/singlefile.py index b269fcf6..563fd53e 100644 --- a/bookmarks/services/singlefile.py +++ b/bookmarks/services/singlefile.py @@ -9,7 +9,7 @@ from django.conf import settings -class SingeFileError(Exception): +class SingleFileError(Exception): pass @@ -31,7 +31,7 @@ def create_snapshot(url: str, filepath: str): # check if the file was created if not os.path.exists(temp_filepath): - raise SingeFileError("Failed to create snapshot") + raise SingleFileError("Failed to create snapshot") with open(temp_filepath, "rb") as raw_file, gzip.open( filepath, "wb" @@ -47,12 +47,12 @@ def create_snapshot(url: str, filepath: str): ) process.terminate() process.wait(timeout=20) - raise SingeFileError("Timeout expired while creating snapshot") + raise SingleFileError("Timeout expired while creating snapshot") except subprocess.TimeoutExpired: # Kill the whole process group, which should also clean up any chromium # processes spawned by single-file logger.error("Timeout expired while terminating. Killing process...") os.killpg(os.getpgid(process.pid), signal.SIGTERM) - raise SingeFileError("Timeout expired while creating snapshot") + raise SingleFileError("Timeout expired while creating snapshot") except subprocess.CalledProcessError as error: - raise SingeFileError(f"Failed to create snapshot: {error.stderr}") + raise SingleFileError(f"Failed to create snapshot: {error.stderr}") diff --git a/bookmarks/tests/test_bookmarks_tasks.py b/bookmarks/tests/test_bookmarks_tasks.py index 25a42c90..828b5141 100644 --- a/bookmarks/tests/test_bookmarks_tasks.py +++ b/bookmarks/tests/test_bookmarks_tasks.py @@ -536,7 +536,7 @@ def test_create_html_snapshot_truncate_filename(self): def test_create_html_snapshot_should_handle_error(self): bookmark = self.setup_bookmark(url="https://example.com") - self.mock_singlefile_create_snapshot.side_effect = singlefile.SingeFileError( + self.mock_singlefile_create_snapshot.side_effect = singlefile.SingleFileError( "Error" ) tasks.create_html_snapshot(bookmark) diff --git a/bookmarks/tests/test_singlefile_service.py b/bookmarks/tests/test_singlefile_service.py index cf026560..c46d730c 100644 --- a/bookmarks/tests/test_singlefile_service.py +++ b/bookmarks/tests/test_singlefile_service.py @@ -43,12 +43,12 @@ def test_create_snapshot_failure(self): with mock.patch("subprocess.Popen") as mock_popen: mock_popen.side_effect = subprocess.CalledProcessError(1, "command") - with self.assertRaises(singlefile.SingeFileError): + with self.assertRaises(singlefile.SingleFileError): singlefile.create_snapshot("http://example.com", self.html_filepath) # so also check that it raises error if output file isn't created with mock.patch("subprocess.Popen"): - with self.assertRaises(singlefile.SingeFileError): + with self.assertRaises(singlefile.SingleFileError): singlefile.create_snapshot("http://example.com", self.html_filepath) def test_create_snapshot_empty_options(self): From 5559ad0070eaf6cbd97864129ec1277cf871e9e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 14 Sep 2024 11:43:49 +0200 Subject: [PATCH 04/12] Bump svelte from 4.2.12 to 4.2.19 (#806) Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 4.2.12 to 4.2.19. - [Release notes](https://github.com/sveltejs/svelte/releases) - [Changelog](https://github.com/sveltejs/svelte/blob/svelte@4.2.19/packages/svelte/CHANGELOG.md) - [Commits](https://github.com/sveltejs/svelte/commits/svelte@4.2.19/packages/svelte) --- updated-dependencies: - dependency-name: svelte dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 44a4a28d..0de01c25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2247,9 +2247,9 @@ } }, "node_modules/svelte": { - "version": "4.2.12", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.12.tgz", - "integrity": "sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==", + "version": "4.2.19", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", + "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", From 785fe32aaafdea69bd3adb1a5ac9453abfdaa708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20I=C3=9Fbr=C3=BCcker?= Date: Sat, 14 Sep 2024 12:06:32 +0200 Subject: [PATCH 05/12] Bump version --- package.json | 2 +- version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4cf1376f..aa00e921 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "linkding", - "version": "1.32.0", + "version": "1.33.0", "description": "", "main": "index.js", "scripts": { diff --git a/version.txt b/version.txt index 359c4108..7aa332e4 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.32.0 +1.33.0 From edba98f1fea1d4bd83852ca2811d3f31c3a46b20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20I=C3=9Fbr=C3=BCcker?= Date: Sat, 14 Sep 2024 12:23:10 +0200 Subject: [PATCH 06/12] Update CHANGELOG.md --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 110f8295..9eeed35b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## v1.33.0 (14/09/2024) + +### What's Changed +* Theme improvements by @sissbruecker in https://github.com/sissbruecker/linkding/pull/822 +* Speed up navigation by @sissbruecker in https://github.com/sissbruecker/linkding/pull/824 +* Rename "SingeFileError" to "SingleFileError" by @curiousleo in https://github.com/sissbruecker/linkding/pull/823 +* Bump svelte from 4.2.12 to 4.2.19 by @dependabot in https://github.com/sissbruecker/linkding/pull/806 + +### New Contributors +* @curiousleo made their first contribution in https://github.com/sissbruecker/linkding/pull/823 + +**Full Changelog**: https://github.com/sissbruecker/linkding/compare/v1.32.0...v1.33.0 + +--- + +## v1.32.0 (10/09/2024) + +### What's Changed +* Allow configuring landing page for unauthenticated users by @sissbruecker in https://github.com/sissbruecker/linkding/pull/808 +* Allow configuring guest user profile by @sissbruecker in https://github.com/sissbruecker/linkding/pull/809 +* Return bookmark tags in RSS feeds by @sissbruecker in https://github.com/sissbruecker/linkding/pull/810 +* Additional filter parameters for RSS feeds by @sissbruecker in https://github.com/sissbruecker/linkding/pull/811 +* Allow pre-filling notes in new bookmark form by @sissbruecker in https://github.com/sissbruecker/linkding/pull/812 +* Fix inconsistent tag order in bookmarks by @sissbruecker in https://github.com/sissbruecker/linkding/pull/819 +* Fix auto-tagging when URL includes port by @sissbruecker in https://github.com/sissbruecker/linkding/pull/820 + + +**Full Changelog**: https://github.com/sissbruecker/linkding/compare/v1.31.1...v1.32.0 + +--- + ## v1.31.1 (30/08/2024) ### What's Changed From 74e65bc3669b5c0099182c6a985deb7950d01c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20I=C3=9Fbr=C3=BCcker?= Date: Sat, 14 Sep 2024 18:55:02 +0200 Subject: [PATCH 07/12] Theme cleanup --- bookmarks/styles/theme/buttons.css | 7 +++++++ package-lock.json | 10 ++-------- package.json | 1 - 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bookmarks/styles/theme/buttons.css b/bookmarks/styles/theme/buttons.css index 77959e42..56e61102 100644 --- a/bookmarks/styles/theme/buttons.css +++ b/bookmarks/styles/theme/buttons.css @@ -84,6 +84,13 @@ &:hover { background: var(--btn-primary-hover-bg-color); } + + &.loading { + &::after { + border-bottom-color: var(--btn-primary-text-color); + border-left-color: var(--btn-primary-text-color); + } + } } /* Button Colors */ diff --git a/package-lock.json b/package-lock.json index 0de01c25..54b32253 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "linkding", - "version": "1.32.0", + "version": "1.33.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "linkding", - "version": "1.32.0", + "version": "1.33.0", "license": "MIT", "dependencies": { "@hotwired/turbo": "^8.0.6", @@ -19,7 +19,6 @@ "postcss-import": "^16.1.0", "postcss-nesting": "^13.0.0", "rollup-plugin-svelte": "^7.2.0", - "spectre.css": "^0.5.8", "svelte": "^4.0.0" }, "devDependencies": { @@ -2191,11 +2190,6 @@ "source-map": "^0.6.0" } }, - "node_modules/spectre.css": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/spectre.css/-/spectre.css-0.5.9.tgz", - "integrity": "sha512-9jUqwZmCnvflrxFGcK+ize43TvjwDjqMwZPVubEtSIHzvinH0TBUESm1LcOJx3Ur7bdPaeOHQIjOqBl1Y5kLFw==" - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", diff --git a/package.json b/package.json index aa00e921..e6c91bc1 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ "postcss-import": "^16.1.0", "postcss-nesting": "^13.0.0", "rollup-plugin-svelte": "^7.2.0", - "spectre.css": "^0.5.8", "svelte": "^4.0.0" }, "devDependencies": { From db225d526782b702b62d3968cdd137645bae162b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20I=C3=9Fbr=C3=BCcker?= Date: Sun, 15 Sep 2024 08:28:49 +0200 Subject: [PATCH 08/12] Fix several issues around browser back navigation (#825) --- bookmarks/frontend/behaviors/bulk-edit.js | 9 ++++-- .../frontend/behaviors/confirm-button.js | 10 +++++-- bookmarks/frontend/behaviors/dropdown.js | 4 +++ .../frontend/behaviors/global-shortcuts.js | 7 ++++- bookmarks/frontend/behaviors/index.js | 6 +++- .../frontend/behaviors/tag-autocomplete.js | 28 +++++++++++++------ .../templates/bookmarks/bulk_edit/bar.html | 5 ++-- bookmarks/templates/bookmarks/form.html | 4 +-- bookmarks/templates/bookmarks/search.html | 12 ++++++-- bookmarks/tests/test_bookmark_edit_view.py | 2 +- 10 files changed, 64 insertions(+), 23 deletions(-) diff --git a/bookmarks/frontend/behaviors/bulk-edit.js b/bookmarks/frontend/behaviors/bulk-edit.js index 6d9d0bcf..45ee131d 100644 --- a/bookmarks/frontend/behaviors/bulk-edit.js +++ b/bookmarks/frontend/behaviors/bulk-edit.js @@ -4,8 +4,9 @@ class BulkEdit extends Behavior { constructor(element) { super(element); - this.active = false; + this.active = element.classList.contains("active"); + this.init = this.init.bind(this); this.onToggleActive = this.onToggleActive.bind(this); this.onToggleAll = this.onToggleAll.bind(this); this.onToggleBookmark = this.onToggleBookmark.bind(this); @@ -13,7 +14,11 @@ class BulkEdit extends Behavior { this.init(); // Reset when bookmarks are refreshed - document.addEventListener("refresh-bookmark-list-done", () => this.init()); + document.addEventListener("refresh-bookmark-list-done", this.init); + } + + destroy() { + document.removeEventListener("refresh-bookmark-list-done", this.init); } init() { diff --git a/bookmarks/frontend/behaviors/confirm-button.js b/bookmarks/frontend/behaviors/confirm-button.js index 059e9382..454c3cf2 100644 --- a/bookmarks/frontend/behaviors/confirm-button.js +++ b/bookmarks/frontend/behaviors/confirm-button.js @@ -13,7 +13,10 @@ class ConfirmButtonBehavior extends Behavior { } destroy() { - Behavior.interacting = false; + this.reset(); + this.element.setAttribute("type", this.element.dataset.type); + this.element.setAttribute("name", this.element.dataset.name); + this.element.setAttribute("value", this.element.dataset.value); } onClick(event) { @@ -70,7 +73,10 @@ class ConfirmButtonBehavior extends Behavior { reset() { setTimeout(() => { Behavior.interacting = false; - this.container.remove(); + if (this.container) { + this.container.remove(); + this.container = null; + } this.element.classList.remove("d-none"); }); } diff --git a/bookmarks/frontend/behaviors/dropdown.js b/bookmarks/frontend/behaviors/dropdown.js index 60a47876..73b03c2b 100644 --- a/bookmarks/frontend/behaviors/dropdown.js +++ b/bookmarks/frontend/behaviors/dropdown.js @@ -16,6 +16,10 @@ class DropdownBehavior extends Behavior { }); } + destroy() { + this.close(); + } + open() { this.element.classList.add("active"); document.addEventListener("click", this.onOutsideClick); diff --git a/bookmarks/frontend/behaviors/global-shortcuts.js b/bookmarks/frontend/behaviors/global-shortcuts.js index fba6ab16..68e16f71 100644 --- a/bookmarks/frontend/behaviors/global-shortcuts.js +++ b/bookmarks/frontend/behaviors/global-shortcuts.js @@ -4,7 +4,12 @@ class GlobalShortcuts extends Behavior { constructor(element) { super(element); - document.addEventListener("keydown", this.onKeyDown.bind(this)); + this.onKeyDown = this.onKeyDown.bind(this); + document.addEventListener("keydown", this.onKeyDown); + } + + destroy() { + document.removeEventListener("keydown", this.onKeyDown); } onKeyDown(event) { diff --git a/bookmarks/frontend/behaviors/index.js b/bookmarks/frontend/behaviors/index.js index 3368f7e7..0dfe49cd 100644 --- a/bookmarks/frontend/behaviors/index.js +++ b/bookmarks/frontend/behaviors/index.js @@ -16,7 +16,7 @@ const mutationObserver = new MutationObserver((mutations) => { }); }); -window.addEventListener("turbo:load", () => { +document.addEventListener("turbo:load", () => { mutationObserver.observe(document.body, { childList: true, subtree: true, @@ -25,6 +25,10 @@ window.addEventListener("turbo:load", () => { applyBehaviors(document.body); }); +document.addEventListener("turbo:before-cache", () => { + destroyBehaviors(document.body); +}); + export class Behavior { constructor(element) { this.element = element; diff --git a/bookmarks/frontend/behaviors/tag-autocomplete.js b/bookmarks/frontend/behaviors/tag-autocomplete.js index 58e8e97a..755ba3c6 100644 --- a/bookmarks/frontend/behaviors/tag-autocomplete.js +++ b/bookmarks/frontend/behaviors/tag-autocomplete.js @@ -5,23 +5,35 @@ import { ApiClient } from "../api"; class TagAutocomplete extends Behavior { constructor(element) { super(element); - const wrapper = document.createElement("div"); + const input = element.querySelector("input"); + if (!input) { + console.warning("TagAutocomplete: input element not found"); + return; + } + + const container = document.createElement("div"); const apiBaseUrl = document.documentElement.dataset.apiBaseUrl || ""; const apiClient = new ApiClient(apiBaseUrl); new TagAutoCompleteComponent({ - target: wrapper, + target: container, props: { - id: element.id, - name: element.name, - value: element.value, - placeholder: element.getAttribute("placeholder") || "", + id: input.id, + name: input.name, + value: input.value, + placeholder: input.getAttribute("placeholder") || "", apiClient: apiClient, - variant: element.getAttribute("variant"), + variant: input.getAttribute("variant"), }, }); - element.replaceWith(wrapper.firstElementChild); + this.input = input; + this.autocomplete = container.firstElementChild; + input.replaceWith(this.autocomplete); + } + + destroy() { + this.autocomplete.replaceWith(this.input); } } diff --git a/bookmarks/templates/bookmarks/bulk_edit/bar.html b/bookmarks/templates/bookmarks/bulk_edit/bar.html index 847b9989..9f5d8a9c 100644 --- a/bookmarks/templates/bookmarks/bulk_edit/bar.html +++ b/bookmarks/templates/bookmarks/bulk_edit/bar.html @@ -23,9 +23,8 @@ {% endif %} -
    - +
    +
    -
    +
    - {{ form.tag_string|add_class:"form-input"|attr:"ld-tag-autocomplete"|attr:"autocomplete:off"|attr:"autocapitalize:off" }} + {{ form.tag_string|add_class:"form-input"|attr:"autocomplete:off"|attr:"autocapitalize:off" }}
    Enter any number of tags separated by space and without the hash (#). If a tag does not exist it will be automatically created. diff --git a/bookmarks/templates/bookmarks/search.html b/bookmarks/templates/bookmarks/search.html index c9e5868a..266416fb 100644 --- a/bookmarks/templates/bookmarks/search.html +++ b/bookmarks/templates/bookmarks/search.html @@ -89,9 +89,9 @@ } const apiClient = new linkding.ApiClient('{% url 'bookmarks:api-root' %}') const input = document.querySelector('#search input[name="q"]') - const wrapper = document.createElement('div') + const container = document.createElement('div') new linkding.SearchAutoComplete({ - target: wrapper, + target: container, props: { name: 'q', placeholder: 'Search for words or #tags', @@ -103,6 +103,12 @@ search, } }) - input.replaceWith(wrapper.firstElementChild); + + const autoComplete = container.firstElementChild; + input.replaceWith(autoComplete); + + document.addEventListener("turbo:before-cache", () => { + autoComplete.replaceWith(input); + }, {once: true}); })(); \ No newline at end of file diff --git a/bookmarks/tests/test_bookmark_edit_view.py b/bookmarks/tests/test_bookmark_edit_view.py index ee5de9f1..68fbafbf 100644 --- a/bookmarks/tests/test_bookmark_edit_view.py +++ b/bookmarks/tests/test_bookmark_edit_view.py @@ -98,7 +98,7 @@ def test_should_prefill_bookmark_form_fields(self): tag_string = build_tag_string(bookmark.tag_names, " ") self.assertInHTML( f""" - """, html, From ffaaf0521d209143298e3b6d3e15a990e79efafe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20I=C3=9Fbr=C3=BCcker?= Date: Mon, 16 Sep 2024 12:48:19 +0200 Subject: [PATCH 09/12] Speed up response times for certain actions (#829) * return updated HTML from bookmark actions * open details through URL * fix details update * improve modal behavior * use a frame * make behaviors properly destroy themselves * remove page and details params from tag urls * use separate behavior for details and tags * remove separate details view * make it work with other views * add asset actions * remove asset refresh for now * remove details partial * fix tests * remove old partials * update tests * cache and reuse tags * extract search autocomplete behavior * remove details param from pagination * fix tests * only return details modal when navigating in frame * fix link target * remove unused behaviors * use auto submit behavior for user select * fix import --- .../e2e/e2e_test_bookmark_details_modal.py | 7 +- .../e2e/e2e_test_bookmark_details_view.py | 37 -- bookmarks/e2e/e2e_test_tag_cloud_modal.py | 6 +- bookmarks/frontend/api.js | 5 +- bookmarks/frontend/behaviors/bookmark-page.js | 13 +- bookmarks/frontend/behaviors/bulk-edit.js | 29 +- .../frontend/behaviors/confirm-button.js | 20 +- bookmarks/frontend/behaviors/details-modal.js | 62 +++ bookmarks/frontend/behaviors/dropdown.js | 20 +- bookmarks/frontend/behaviors/fetch.js | 48 -- bookmarks/frontend/behaviors/form.js | 75 ++- bookmarks/frontend/behaviors/index.js | 48 -- bookmarks/frontend/behaviors/modal.js | 51 -- .../frontend/behaviors/search-autocomplete.js | 41 ++ .../frontend/behaviors/tag-autocomplete.js | 6 +- bookmarks/frontend/behaviors/tag-modal.js | 68 +++ bookmarks/frontend/cache.js | 35 ++ .../components/SearchAutoComplete.svelte | 15 +- .../components/TagAutocomplete.svelte | 18 +- bookmarks/frontend/index.js | 9 +- bookmarks/models.py | 2 +- bookmarks/styles/bookmark-details.css | 21 - bookmarks/styles/theme/modals.css | 10 + bookmarks/templates/bookmarks/archive.html | 22 +- .../templates/bookmarks/bookmark_list.html | 5 +- bookmarks/templates/bookmarks/details.html | 13 - .../templates/bookmarks/details/actions.html | 16 - .../templates/bookmarks/details/assets.html | 9 +- .../templates/bookmarks/details/form.html | 8 +- .../templates/bookmarks/details/modal.html | 47 ++ .../templates/bookmarks/details/title.html | 3 - .../templates/bookmarks/details_modal.html | 30 -- bookmarks/templates/bookmarks/head.html | 40 ++ bookmarks/templates/bookmarks/index.html | 23 +- bookmarks/templates/bookmarks/layout.html | 39 +- bookmarks/templates/bookmarks/pagination.html | 16 +- bookmarks/templates/bookmarks/search.html | 48 +- bookmarks/templates/bookmarks/shared.html | 22 +- bookmarks/templates/bookmarks/tag_modal.html | 21 - .../updates/bookmark_view_stream.html | 21 + .../updates/details-modal-frame.html | 10 + .../templates/bookmarks/user_select.html | 9 +- .../templates/settings/integrations.html | 4 +- bookmarks/templatetags/bookmarks.py | 7 +- bookmarks/templatetags/pagination.py | 41 +- bookmarks/templatetags/shared.py | 17 +- bookmarks/tests/helpers.py | 70 +++ bookmarks/tests/test_bookmark_action_view.py | 295 ++++++++++-- .../tests/test_bookmark_archived_view.py | 98 +--- .../tests/test_bookmark_details_modal.py | 447 ++++++------------ bookmarks/tests/test_bookmark_details_view.py | 6 - bookmarks/tests/test_bookmark_index_view.py | 102 +--- bookmarks/tests/test_bookmark_search_tag.py | 26 +- bookmarks/tests/test_bookmark_shared_view.py | 78 +-- .../tests/test_bookmarks_list_template.py | 30 +- bookmarks/tests/test_pagination_tag.py | 9 + bookmarks/tests/test_tag_cloud_template.py | 43 +- bookmarks/urls.py | 62 --- bookmarks/utils.py | 10 + bookmarks/views/bookmarks.py | 203 ++++---- bookmarks/views/{partials => }/contexts.py | 112 +++-- bookmarks/views/partials.py | 40 ++ bookmarks/views/partials/__init__.py | 76 --- bookmarks/views/turbo.py | 19 + siteroot/settings/dev.py | 4 +- 65 files changed, 1411 insertions(+), 1436 deletions(-) delete mode 100644 bookmarks/e2e/e2e_test_bookmark_details_view.py create mode 100644 bookmarks/frontend/behaviors/details-modal.js delete mode 100644 bookmarks/frontend/behaviors/fetch.js delete mode 100644 bookmarks/frontend/behaviors/modal.js create mode 100644 bookmarks/frontend/behaviors/search-autocomplete.js create mode 100644 bookmarks/frontend/behaviors/tag-modal.js create mode 100644 bookmarks/frontend/cache.js delete mode 100644 bookmarks/templates/bookmarks/details.html delete mode 100644 bookmarks/templates/bookmarks/details/actions.html create mode 100644 bookmarks/templates/bookmarks/details/modal.html delete mode 100644 bookmarks/templates/bookmarks/details/title.html delete mode 100644 bookmarks/templates/bookmarks/details_modal.html create mode 100644 bookmarks/templates/bookmarks/head.html delete mode 100644 bookmarks/templates/bookmarks/tag_modal.html create mode 100644 bookmarks/templates/bookmarks/updates/bookmark_view_stream.html create mode 100644 bookmarks/templates/bookmarks/updates/details-modal-frame.html delete mode 100644 bookmarks/tests/test_bookmark_details_view.py rename bookmarks/views/{partials => }/contexts.py (84%) create mode 100644 bookmarks/views/partials.py delete mode 100644 bookmarks/views/partials/__init__.py create mode 100644 bookmarks/views/turbo.py diff --git a/bookmarks/e2e/e2e_test_bookmark_details_modal.py b/bookmarks/e2e/e2e_test_bookmark_details_modal.py index 73872e5e..947a48f6 100644 --- a/bookmarks/e2e/e2e_test_bookmark_details_modal.py +++ b/bookmarks/e2e/e2e_test_bookmark_details_modal.py @@ -121,8 +121,9 @@ def test_edit_return_url(self): with self.page.expect_navigation(): details_modal.get_by_text("Edit").click() - # Cancel edit, verify return url - with self.page.expect_navigation(url=self.live_server_url + url): + # Cancel edit, verify return to details url + details_url = url + f"&details={bookmark.id}" + with self.page.expect_navigation(url=self.live_server_url + details_url): self.page.get_by_text("Nevermind").click() def test_delete(self): @@ -167,7 +168,7 @@ def test_create_snapshot_remove_snapshot(self): # Has new snapshots expect(snapshot).to_be_visible() - # Create snapshot + # Remove snapshot asset_list.get_by_text("Remove", exact=False).click() asset_list.get_by_text("Confirm", exact=False).click() diff --git a/bookmarks/e2e/e2e_test_bookmark_details_view.py b/bookmarks/e2e/e2e_test_bookmark_details_view.py deleted file mode 100644 index 8b792ffa..00000000 --- a/bookmarks/e2e/e2e_test_bookmark_details_view.py +++ /dev/null @@ -1,37 +0,0 @@ -from django.urls import reverse -from playwright.sync_api import sync_playwright - -from bookmarks.e2e.helpers import LinkdingE2ETestCase - - -class BookmarkDetailsViewE2ETestCase(LinkdingE2ETestCase): - def test_edit_return_url(self): - bookmark = self.setup_bookmark() - - with sync_playwright() as p: - self.open(reverse("bookmarks:details", args=[bookmark.id]), p) - - # Navigate to edit page - with self.page.expect_navigation(): - self.page.get_by_text("Edit").click() - - # Cancel edit, verify return url - with self.page.expect_navigation( - url=self.live_server_url - + reverse("bookmarks:details", args=[bookmark.id]) - ): - self.page.get_by_text("Nevermind").click() - - def test_delete_return_url(self): - bookmark = self.setup_bookmark() - - with sync_playwright() as p: - self.open(reverse("bookmarks:details", args=[bookmark.id]), p) - - # Trigger delete, verify return url - # Should probably return to last bookmark list page, but for now just returns to index - with self.page.expect_navigation( - url=self.live_server_url + reverse("bookmarks:index") - ): - self.page.get_by_text("Delete...").click() - self.page.get_by_text("Confirm").click() diff --git a/bookmarks/e2e/e2e_test_tag_cloud_modal.py b/bookmarks/e2e/e2e_test_tag_cloud_modal.py index 19793ebe..7d60dcc2 100644 --- a/bookmarks/e2e/e2e_test_tag_cloud_modal.py +++ b/bookmarks/e2e/e2e_test_tag_cloud_modal.py @@ -1,9 +1,7 @@ -from django.test import override_settings from django.urls import reverse -from playwright.sync_api import sync_playwright, expect, Locator +from playwright.sync_api import sync_playwright, expect from bookmarks.e2e.helpers import LinkdingE2ETestCase -from bookmarks.models import Bookmark class TagCloudModalE2ETestCase(LinkdingE2ETestCase): @@ -26,7 +24,7 @@ def test_show_modal_close_modal(self): # verify modal is visible modal = page.locator(".modal") expect(modal).to_be_visible() - expect(modal.locator(".modal-title")).to_have_text("Tags") + expect(modal.locator("h2")).to_have_text("Tags") # close with close button modal.locator("button.close").click() diff --git a/bookmarks/frontend/api.js b/bookmarks/frontend/api.js index dfe682f8..2a47d882 100644 --- a/bookmarks/frontend/api.js +++ b/bookmarks/frontend/api.js @@ -1,4 +1,4 @@ -export class ApiClient { +export class Api { constructor(baseUrl) { this.baseUrl = baseUrl; } @@ -27,3 +27,6 @@ export class ApiClient { .then((data) => data.results); } } + +const apiBaseUrl = document.documentElement.dataset.apiBaseUrl || ""; +export const api = new Api(apiBaseUrl); diff --git a/bookmarks/frontend/behaviors/bookmark-page.js b/bookmarks/frontend/behaviors/bookmark-page.js index 6f77973e..681f5f62 100644 --- a/bookmarks/frontend/behaviors/bookmark-page.js +++ b/bookmarks/frontend/behaviors/bookmark-page.js @@ -5,9 +5,10 @@ class BookmarkItem extends Behavior { super(element); // Toggle notes - const notesToggle = element.querySelector(".toggle-notes"); - if (notesToggle) { - notesToggle.addEventListener("click", this.onToggleNotes.bind(this)); + this.onToggleNotes = this.onToggleNotes.bind(this); + this.notesToggle = element.querySelector(".toggle-notes"); + if (this.notesToggle) { + this.notesToggle.addEventListener("click", this.onToggleNotes); } // Add tooltip to title if it is truncated @@ -20,6 +21,12 @@ class BookmarkItem extends Behavior { }); } + destroy() { + if (this.notesToggle) { + this.notesToggle.removeEventListener("click", this.onToggleNotes); + } + } + onToggleNotes(event) { event.preventDefault(); event.stopPropagation(); diff --git a/bookmarks/frontend/behaviors/bulk-edit.js b/bookmarks/frontend/behaviors/bulk-edit.js index 45ee131d..e5b5578e 100644 --- a/bookmarks/frontend/behaviors/bulk-edit.js +++ b/bookmarks/frontend/behaviors/bulk-edit.js @@ -13,12 +13,13 @@ class BulkEdit extends Behavior { this.onActionSelected = this.onActionSelected.bind(this); this.init(); - // Reset when bookmarks are refreshed - document.addEventListener("refresh-bookmark-list-done", this.init); + // Reset when bookmarks are updated + document.addEventListener("bookmark-list-updated", this.init); } destroy() { - document.removeEventListener("refresh-bookmark-list-done", this.init); + this.removeListeners(); + document.removeEventListener("bookmark-list-updated", this.init); } init() { @@ -36,13 +37,9 @@ class BulkEdit extends Behavior { this.element.querySelectorAll(".bulk-edit-checkbox:not(.all) input"), ); - // Remove previous listeners if elements are the same - this.activeToggle.removeEventListener("click", this.onToggleActive); - this.actionSelect.removeEventListener("change", this.onActionSelected); - this.allCheckbox.removeEventListener("change", this.onToggleAll); - this.bookmarkCheckboxes.forEach((checkbox) => { - checkbox.removeEventListener("change", this.onToggleBookmark); - }); + // Add listeners, ensure there are no dupes by possibly removing existing listeners + this.removeListeners(); + this.addListeners(); // Reset checkbox states this.reset(); @@ -52,8 +49,9 @@ class BulkEdit extends Behavior { const total = totalHolder?.dataset.bookmarksTotal || 0; const totalSpan = this.selectAcross.querySelector("span.total"); totalSpan.textContent = total; + } - // Add new listeners + addListeners() { this.activeToggle.addEventListener("click", this.onToggleActive); this.actionSelect.addEventListener("change", this.onActionSelected); this.allCheckbox.addEventListener("change", this.onToggleAll); @@ -62,6 +60,15 @@ class BulkEdit extends Behavior { }); } + removeListeners() { + this.activeToggle.removeEventListener("click", this.onToggleActive); + this.actionSelect.removeEventListener("change", this.onActionSelected); + this.allCheckbox.removeEventListener("change", this.onToggleAll); + this.bookmarkCheckboxes.forEach((checkbox) => { + checkbox.removeEventListener("change", this.onToggleBookmark); + }); + } + onToggleActive() { this.active = !this.active; if (this.active) { diff --git a/bookmarks/frontend/behaviors/confirm-button.js b/bookmarks/frontend/behaviors/confirm-button.js index 454c3cf2..fb213eea 100644 --- a/bookmarks/frontend/behaviors/confirm-button.js +++ b/bookmarks/frontend/behaviors/confirm-button.js @@ -3,20 +3,14 @@ import { Behavior, registerBehavior } from "./index"; class ConfirmButtonBehavior extends Behavior { constructor(element) { super(element); - element.dataset.type = element.type; - element.dataset.name = element.name; - element.dataset.value = element.value; - element.removeAttribute("type"); - element.removeAttribute("name"); - element.removeAttribute("value"); - element.addEventListener("click", this.onClick.bind(this)); + + this.onClick = this.onClick.bind(this); + element.addEventListener("click", this.onClick); } destroy() { this.reset(); - this.element.setAttribute("type", this.element.dataset.type); - this.element.setAttribute("name", this.element.dataset.name); - this.element.setAttribute("value", this.element.dataset.value); + this.element.removeEventListener("click", this.onClick); } onClick(event) { @@ -56,9 +50,9 @@ class ConfirmButtonBehavior extends Behavior { cancelButton.addEventListener("click", this.reset.bind(this)); const confirmButton = document.createElement(this.element.nodeName); - confirmButton.type = this.element.dataset.type; - confirmButton.name = this.element.dataset.name; - confirmButton.value = this.element.dataset.value; + confirmButton.type = this.element.type; + confirmButton.name = this.element.name; + confirmButton.value = this.element.value; confirmButton.innerText = question ? "Yes" : "Confirm"; confirmButton.className = buttonClasses; confirmButton.addEventListener("click", this.reset.bind(this)); diff --git a/bookmarks/frontend/behaviors/details-modal.js b/bookmarks/frontend/behaviors/details-modal.js new file mode 100644 index 00000000..5646969d --- /dev/null +++ b/bookmarks/frontend/behaviors/details-modal.js @@ -0,0 +1,62 @@ +import { Behavior, registerBehavior } from "./index"; + +class DetailsModalBehavior extends Behavior { + constructor(element) { + super(element); + + this.onClose = this.onClose.bind(this); + this.onKeyDown = this.onKeyDown.bind(this); + + this.overlayLink = element.querySelector("a:has(.modal-overlay)"); + this.buttonLink = element.querySelector("a:has(button.close)"); + + this.overlayLink.addEventListener("click", this.onClose); + this.buttonLink.addEventListener("click", this.onClose); + document.addEventListener("keydown", this.onKeyDown); + } + + destroy() { + this.overlayLink.removeEventListener("click", this.onClose); + this.buttonLink.removeEventListener("click", this.onClose); + document.removeEventListener("keydown", this.onKeyDown); + } + + onKeyDown(event) { + // Skip if event occurred within an input element + const targetNodeName = event.target.nodeName; + const isInputTarget = + targetNodeName === "INPUT" || + targetNodeName === "SELECT" || + targetNodeName === "TEXTAREA"; + + if (isInputTarget) { + return; + } + + if (event.key === "Escape") { + this.onClose(event); + } + } + + onClose(event) { + event.preventDefault(); + this.element.classList.add("closing"); + this.element.addEventListener( + "animationend", + (event) => { + if (event.animationName === "fade-out") { + this.element.remove(); + + const closeUrl = this.overlayLink.href; + Turbo.visit(closeUrl, { + action: "replace", + frame: "details-modal", + }); + } + }, + { once: true }, + ); + } +} + +registerBehavior("ld-details-modal", DetailsModalBehavior); diff --git a/bookmarks/frontend/behaviors/dropdown.js b/bookmarks/frontend/behaviors/dropdown.js index 73b03c2b..954ced85 100644 --- a/bookmarks/frontend/behaviors/dropdown.js +++ b/bookmarks/frontend/behaviors/dropdown.js @@ -4,20 +4,16 @@ class DropdownBehavior extends Behavior { constructor(element) { super(element); this.opened = false; + this.onClick = this.onClick.bind(this); this.onOutsideClick = this.onOutsideClick.bind(this); - const toggle = element.querySelector(".dropdown-toggle"); - toggle.addEventListener("click", () => { - if (this.opened) { - this.close(); - } else { - this.open(); - } - }); + this.toggle = element.querySelector(".dropdown-toggle"); + this.toggle.addEventListener("click", this.onClick); } destroy() { this.close(); + this.toggle.removeEventListener("click", this.onClick); } open() { @@ -30,6 +26,14 @@ class DropdownBehavior extends Behavior { document.removeEventListener("click", this.onOutsideClick); } + onClick() { + if (this.opened) { + this.close(); + } else { + this.open(); + } + } + onOutsideClick(event) { if (!this.element.contains(event.target)) { this.close(); diff --git a/bookmarks/frontend/behaviors/fetch.js b/bookmarks/frontend/behaviors/fetch.js deleted file mode 100644 index 32b71847..00000000 --- a/bookmarks/frontend/behaviors/fetch.js +++ /dev/null @@ -1,48 +0,0 @@ -import { Behavior, fireEvents, registerBehavior, swap } from "./index"; - -class FetchBehavior extends Behavior { - constructor(element) { - super(element); - - const eventName = element.getAttribute("ld-on"); - const interval = parseInt(element.getAttribute("ld-interval")) * 1000; - - this.onFetch = this.onFetch.bind(this); - this.onInterval = this.onInterval.bind(this); - - element.addEventListener(eventName, this.onFetch); - if (interval) { - this.intervalId = setInterval(this.onInterval, interval); - } - } - - destroy() { - if (this.intervalId) { - clearInterval(this.intervalId); - } - } - - async onFetch(maybeEvent) { - if (maybeEvent) { - maybeEvent.preventDefault(); - } - const url = this.element.getAttribute("ld-fetch"); - const html = await fetch(url).then((response) => response.text()); - - const target = this.element.getAttribute("ld-target"); - const select = this.element.getAttribute("ld-select"); - swap(this.element, html, { target, select }); - - const events = this.element.getAttribute("ld-fire"); - fireEvents(events); - } - - onInterval() { - if (Behavior.interacting) { - return; - } - this.onFetch(); - } -} - -registerBehavior("ld-fetch", FetchBehavior); diff --git a/bookmarks/frontend/behaviors/form.js b/bookmarks/frontend/behaviors/form.js index 3b6dec23..ca475552 100644 --- a/bookmarks/frontend/behaviors/form.js +++ b/bookmarks/frontend/behaviors/form.js @@ -1,64 +1,55 @@ -import { Behavior, fireEvents, registerBehavior } from "./index"; +import { Behavior, registerBehavior } from "./index"; -class FormBehavior extends Behavior { +class AutoSubmitBehavior extends Behavior { constructor(element) { super(element); - element.addEventListener("submit", this.onSubmit.bind(this)); + this.submit = this.submit.bind(this); + element.addEventListener("change", this.submit); } - async onSubmit(event) { - event.preventDefault(); - - const url = this.element.action; - const formData = new FormData(this.element); - if (event.submitter) { - formData.append(event.submitter.name, event.submitter.value); - } - - await fetch(url, { - method: "POST", - body: formData, - redirect: "manual", // ignore redirect - }); - - const events = this.element.getAttribute("ld-fire"); - if (fireEvents) { - fireEvents(events); - } + destroy() { + this.element.removeEventListener("change", this.submit); } -} -class AutoSubmitBehavior extends Behavior { - constructor(element) { - super(element); - - element.addEventListener("change", () => { - const form = element.closest("form"); - form.dispatchEvent(new Event("submit", { cancelable: true })); - }); + submit() { + this.element.closest("form").requestSubmit(); } } class UploadButton extends Behavior { constructor(element) { super(element); + this.fileInput = element.nextElementSibling; - const fileInput = element.nextElementSibling; + this.onClick = this.onClick.bind(this); + this.onChange = this.onChange.bind(this); - element.addEventListener("click", () => { - fileInput.click(); - }); + element.addEventListener("click", this.onClick); + this.fileInput.addEventListener("change", this.onChange); + } + + destroy() { + this.element.removeEventListener("click", this.onClick); + this.fileInput.removeEventListener("change", this.onChange); + } - fileInput.addEventListener("change", () => { - const form = fileInput.closest("form"); - const event = new Event("submit", { cancelable: true }); - event.submitter = element; - form.dispatchEvent(event); - }); + onClick(event) { + event.preventDefault(); + this.fileInput.click(); + } + + onChange() { + // Check if the file input has a file selected + if (!this.fileInput.files.length) { + return; + } + const form = this.fileInput.closest("form"); + form.requestSubmit(this.element); + // remove selected file so it doesn't get submitted again + this.fileInput.value = ""; } } -registerBehavior("ld-form", FormBehavior); registerBehavior("ld-auto-submit", AutoSubmitBehavior); registerBehavior("ld-upload-button", UploadButton); diff --git a/bookmarks/frontend/behaviors/index.js b/bookmarks/frontend/behaviors/index.js index 0dfe49cd..c973ce2d 100644 --- a/bookmarks/frontend/behaviors/index.js +++ b/bookmarks/frontend/behaviors/index.js @@ -103,51 +103,3 @@ export function destroyBehaviors(element) { }); }); } - -export function swap(element, html, options) { - const dom = new DOMParser().parseFromString(html, "text/html"); - - let targetElement = element; - let strategy = "innerHTML"; - if (options.target) { - const parts = options.target.split("|"); - targetElement = - parts[0] === "self" ? element : document.querySelector(parts[0]); - strategy = parts[1] || "innerHTML"; - } - - let contents = Array.from(dom.body.children); - if (options.select) { - contents = Array.from(dom.querySelectorAll(options.select)); - } - - switch (strategy) { - case "append": - targetElement.append(...contents); - break; - case "outerHTML": - targetElement.parentElement.replaceChild(contents[0], targetElement); - break; - case "innerHTML": - default: - Array.from(targetElement.children).forEach((child) => { - child.remove(); - }); - targetElement.append(...contents); - } -} - -export function fireEvents(events) { - if (!events) { - return; - } - events.split(",").forEach((eventName) => { - const targets = Array.from( - document.querySelectorAll(`[ld-on='${eventName}']`), - ); - targets.push(document); - targets.forEach((target) => { - target.dispatchEvent(new CustomEvent(eventName)); - }); - }); -} diff --git a/bookmarks/frontend/behaviors/modal.js b/bookmarks/frontend/behaviors/modal.js deleted file mode 100644 index f22ed247..00000000 --- a/bookmarks/frontend/behaviors/modal.js +++ /dev/null @@ -1,51 +0,0 @@ -import { Behavior, registerBehavior } from "./index"; - -class ModalBehavior extends Behavior { - constructor(element) { - super(element); - - this.onClose = this.onClose.bind(this); - this.onKeyDown = this.onKeyDown.bind(this); - - const modalOverlay = element.querySelector(".modal-overlay"); - const closeButton = element.querySelector("button.close"); - modalOverlay.addEventListener("click", this.onClose); - closeButton.addEventListener("click", this.onClose); - - document.addEventListener("keydown", this.onKeyDown); - } - - destroy() { - document.removeEventListener("keydown", this.onKeyDown); - } - - onKeyDown(event) { - // Skip if event occurred within an input element - const targetNodeName = event.target.nodeName; - const isInputTarget = - targetNodeName === "INPUT" || - targetNodeName === "SELECT" || - targetNodeName === "TEXTAREA"; - - if (isInputTarget) { - return; - } - - if (event.key === "Escape") { - event.preventDefault(); - this.onClose(); - } - } - - onClose() { - document.removeEventListener("keydown", this.onKeyDown); - this.element.classList.add("closing"); - this.element.addEventListener("animationend", (event) => { - if (event.animationName === "fade-out") { - this.element.remove(); - } - }); - } -} - -registerBehavior("ld-modal", ModalBehavior); diff --git a/bookmarks/frontend/behaviors/search-autocomplete.js b/bookmarks/frontend/behaviors/search-autocomplete.js new file mode 100644 index 00000000..d7a686f5 --- /dev/null +++ b/bookmarks/frontend/behaviors/search-autocomplete.js @@ -0,0 +1,41 @@ +import { Behavior, registerBehavior } from "./index"; +import SearchAutoCompleteComponent from "../components/SearchAutoComplete.svelte"; + +class SearchAutocomplete extends Behavior { + constructor(element) { + super(element); + const input = element.querySelector("input"); + if (!input) { + console.warn("SearchAutocomplete: input element not found"); + return; + } + + const container = document.createElement("div"); + + new SearchAutoCompleteComponent({ + target: container, + props: { + name: "q", + placeholder: input.getAttribute("placeholder") || "", + value: input.value, + linkTarget: input.dataset.linkTarget, + mode: input.dataset.mode, + search: { + user: input.dataset.user, + shared: input.dataset.shared, + unread: input.dataset.unread, + }, + }, + }); + + this.input = input; + this.autocomplete = container.firstElementChild; + input.replaceWith(this.autocomplete); + } + + destroy() { + this.autocomplete.replaceWith(this.input); + } +} + +registerBehavior("ld-search-autocomplete", SearchAutocomplete); diff --git a/bookmarks/frontend/behaviors/tag-autocomplete.js b/bookmarks/frontend/behaviors/tag-autocomplete.js index 755ba3c6..7221582d 100644 --- a/bookmarks/frontend/behaviors/tag-autocomplete.js +++ b/bookmarks/frontend/behaviors/tag-autocomplete.js @@ -1,19 +1,16 @@ import { Behavior, registerBehavior } from "./index"; import TagAutoCompleteComponent from "../components/TagAutocomplete.svelte"; -import { ApiClient } from "../api"; class TagAutocomplete extends Behavior { constructor(element) { super(element); const input = element.querySelector("input"); if (!input) { - console.warning("TagAutocomplete: input element not found"); + console.warn("TagAutocomplete: input element not found"); return; } const container = document.createElement("div"); - const apiBaseUrl = document.documentElement.dataset.apiBaseUrl || ""; - const apiClient = new ApiClient(apiBaseUrl); new TagAutoCompleteComponent({ target: container, @@ -22,7 +19,6 @@ class TagAutocomplete extends Behavior { name: input.name, value: input.value, placeholder: input.getAttribute("placeholder") || "", - apiClient: apiClient, variant: input.getAttribute("variant"), }, }); diff --git a/bookmarks/frontend/behaviors/tag-modal.js b/bookmarks/frontend/behaviors/tag-modal.js new file mode 100644 index 00000000..9963bff7 --- /dev/null +++ b/bookmarks/frontend/behaviors/tag-modal.js @@ -0,0 +1,68 @@ +import { Behavior, registerBehavior } from "./index"; + +class TagModalBehavior extends Behavior { + constructor(element) { + super(element); + + this.onClick = this.onClick.bind(this); + this.onClose = this.onClose.bind(this); + + element.addEventListener("click", this.onClick); + } + + destroy() { + this.onClose(); + this.element.removeEventListener("click", this.onClick); + } + + onClick() { + const modal = document.createElement("div"); + modal.classList.add("modal", "active"); + modal.innerHTML = ` + + + `; + + const tagCloud = document.querySelector(".tag-cloud"); + const tagCloudContainer = tagCloud.parentElement; + + const content = modal.querySelector(".content"); + content.appendChild(tagCloud); + + const overlay = modal.querySelector(".modal-overlay"); + const closeButton = modal.querySelector(".close"); + overlay.addEventListener("click", this.onClose); + closeButton.addEventListener("click", this.onClose); + + this.modal = modal; + this.tagCloud = tagCloud; + this.tagCloudContainer = tagCloudContainer; + document.body.appendChild(modal); + } + + onClose() { + if (!this.modal) { + return; + } + + this.modal.remove(); + this.tagCloudContainer.appendChild(this.tagCloud); + } +} + +registerBehavior("ld-tag-modal", TagModalBehavior); diff --git a/bookmarks/frontend/cache.js b/bookmarks/frontend/cache.js new file mode 100644 index 00000000..0bcf9e58 --- /dev/null +++ b/bookmarks/frontend/cache.js @@ -0,0 +1,35 @@ +import { api } from "./api.js"; + +class Cache { + constructor(api) { + this.api = api; + + // Reset cached tags after a form submission + document.addEventListener("turbo:submit-end", () => { + this.tagsPromise = null; + }); + } + + getTags() { + if (!this.tagsPromise) { + this.tagsPromise = this.api + .getTags({ + limit: 5000, + offset: 0, + }) + .then((tags) => + tags.sort((left, right) => + left.name.toLowerCase().localeCompare(right.name.toLowerCase()), + ), + ) + .catch((e) => { + console.warn("Cache: Error loading tags", e); + return []; + }); + } + + return this.tagsPromise; + } +} + +export const cache = new Cache(api); diff --git a/bookmarks/frontend/components/SearchAutoComplete.svelte b/bookmarks/frontend/components/SearchAutoComplete.svelte index 61aade0a..4a9cec94 100644 --- a/bookmarks/frontend/components/SearchAutoComplete.svelte +++ b/bookmarks/frontend/components/SearchAutoComplete.svelte @@ -1,5 +1,7 @@ + diff --git a/bookmarks/templates/bookmarks/index.html b/bookmarks/templates/bookmarks/index.html index 279fa5e9..b73d8e03 100644 --- a/bookmarks/templates/bookmarks/index.html +++ b/bookmarks/templates/bookmarks/index.html @@ -11,24 +11,19 @@

    Bookmarks

    - {% bookmark_search bookmark_list.search tag_cloud.tags %} + {% bookmark_search bookmark_list.search %} {% include 'bookmarks/bulk_edit/toggle.html' %} - +
    - {% csrf_token %} {% include 'bookmarks/bulk_edit/bar.html' with disable_actions='bulk_unarchive' %} -
    +
    {% include 'bookmarks/bookmark_list.html' %}
    @@ -39,10 +34,16 @@

    Bookmarks

    Tags

    -
    +
    {% include 'bookmarks/tag_cloud.html' %}
    + + {# Bookmark details #} + + {% if details %} + {% include 'bookmarks/details/modal.html' %} + {% endif %} +
    {% endblock %} diff --git a/bookmarks/templates/bookmarks/layout.html b/bookmarks/templates/bookmarks/layout.html index c05e2216..678da394 100644 --- a/bookmarks/templates/bookmarks/layout.html +++ b/bookmarks/templates/bookmarks/layout.html @@ -3,44 +3,7 @@ {# Use data attributes as storage for access in static scripts #} - - - - - - - - - - - - - linkding - {# Include specific theme variant based on user profile setting #} - {% if request.user_profile.theme == 'light' %} - - - {% elif request.user_profile.theme == 'dark' %} - - - {% else %} - {# Use auto theme as fallback #} - - - - - {% endif %} - {% if request.user_profile.custom_css %} - - {% endif %} - - {% if not request.global_settings.enable_link_prefetch %} - - {% endif %} - - +{% include 'bookmarks/head.html' %}
    diff --git a/bookmarks/templates/bookmarks/pagination.html b/bookmarks/templates/bookmarks/pagination.html index 59f853ef..62a63949 100644 --- a/bookmarks/templates/bookmarks/pagination.html +++ b/bookmarks/templates/bookmarks/pagination.html @@ -1,9 +1,9 @@ {% load shared %}
      - {% if page.has_previous %} + {% if prev_link %}
    • - Previous + Previous
    • {% else %}
    • @@ -11,10 +11,10 @@
    • {% endif %} - {% for page_number in visible_page_numbers %} - {% if page_number >= 0 %} -
    • - {{ page_number }} + {% for page_link in page_links %} + {% if page_link %} +
    • + {{ page_link.number }}
    • {% else %}
    • @@ -23,9 +23,9 @@ {% endif %} {% endfor %} - {% if page.has_next %} + {% if next_link %}
    • - Next + Next
    • {% else %}
    • diff --git a/bookmarks/templates/bookmarks/search.html b/bookmarks/templates/bookmarks/search.html index 266416fb..ecc533e1 100644 --- a/bookmarks/templates/bookmarks/search.html +++ b/bookmarks/templates/bookmarks/search.html @@ -1,9 +1,14 @@ {% load widget_tweaks %} -
      +
    - - -{# Replace search input with auto-complete component #} - \ No newline at end of file diff --git a/bookmarks/templates/bookmarks/shared.html b/bookmarks/templates/bookmarks/shared.html index d34ed42f..385ef983 100644 --- a/bookmarks/templates/bookmarks/shared.html +++ b/bookmarks/templates/bookmarks/shared.html @@ -11,21 +11,17 @@

    Shared bookmarks

    - {% bookmark_search bookmark_list.search tag_cloud.tags mode='shared' %} -
    - {% csrf_token %} -
    +
    {% include 'bookmarks/bookmark_list.html' %}
    @@ -43,10 +39,16 @@

    User

    Tags

    -
    +
    {% include 'bookmarks/tag_cloud.html' %}
    + + {# Bookmark details #} + + {% if details %} + {% include 'bookmarks/details/modal.html' %} + {% endif %} +
    {% endblock %} diff --git a/bookmarks/templates/bookmarks/tag_modal.html b/bookmarks/templates/bookmarks/tag_modal.html deleted file mode 100644 index 9549f1ec..00000000 --- a/bookmarks/templates/bookmarks/tag_modal.html +++ /dev/null @@ -1,21 +0,0 @@ - diff --git a/bookmarks/templates/bookmarks/updates/bookmark_view_stream.html b/bookmarks/templates/bookmarks/updates/bookmark_view_stream.html new file mode 100644 index 00000000..b009915e --- /dev/null +++ b/bookmarks/templates/bookmarks/updates/bookmark_view_stream.html @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/bookmarks/templates/bookmarks/updates/details-modal-frame.html b/bookmarks/templates/bookmarks/updates/details-modal-frame.html new file mode 100644 index 00000000..80c51c45 --- /dev/null +++ b/bookmarks/templates/bookmarks/updates/details-modal-frame.html @@ -0,0 +1,10 @@ + +{% include 'bookmarks/head.html' %} + + + {% if details %} + {% include 'bookmarks/details/modal.html' %} + {% endif %} + + + diff --git a/bookmarks/templates/bookmarks/user_select.html b/bookmarks/templates/bookmarks/user_select.html index 12867021..2f167482 100644 --- a/bookmarks/templates/bookmarks/user_select.html +++ b/bookmarks/templates/bookmarks/user_select.html @@ -6,17 +6,10 @@ {% endfor %}
    - {{ form.user|add_class:"form-select" }} + {% render_field form.user class+="form-select" ld-auto-submit="" %}
    - diff --git a/bookmarks/templates/settings/integrations.html b/bookmarks/templates/settings/integrations.html index 0c925bfc..66d9d6d5 100644 --- a/bookmarks/templates/settings/integrations.html +++ b/bookmarks/templates/settings/integrations.html @@ -27,7 +27,7 @@

    Bookmarklet

  • After saving the bookmark the linkding window closes and you are back on your website
  • Drag the following bookmarklet to your browser's toolbar:

    - 📎 Add bookmark @@ -43,7 +43,7 @@

    REST API

    Please treat this token as you would any other credential. Any party with access to this token can access and manage all your bookmarks. If you think that a token was compromised you can revoke (delete) it in the admin panel. + target="_blank" href="{% url 'admin:authtoken_tokenproxy_changelist' %}">admin panel. After deleting the token, a new one will be generated when you reload this settings page.

    diff --git a/bookmarks/templatetags/bookmarks.py b/bookmarks/templatetags/bookmarks.py index af7f929b..d7706ceb 100644 --- a/bookmarks/templatetags/bookmarks.py +++ b/bookmarks/templatetags/bookmarks.py @@ -6,8 +6,6 @@ BookmarkForm, BookmarkSearch, BookmarkSearchForm, - Tag, - build_tag_string, User, ) @@ -34,9 +32,7 @@ def bookmark_form( @register.inclusion_tag( "bookmarks/search.html", name="bookmark_search", takes_context=True ) -def bookmark_search(context, search: BookmarkSearch, tags: [Tag], mode: str = ""): - tag_names = [tag.name for tag in tags] - tags_string = build_tag_string(tag_names, " ") +def bookmark_search(context, search: BookmarkSearch, mode: str = ""): search_form = BookmarkSearchForm(search, editable_fields=["q"]) if mode == "shared": @@ -50,7 +46,6 @@ def bookmark_search(context, search: BookmarkSearch, tags: [Tag], mode: str = "" "search": search, "search_form": search_form, "preferences_form": preferences_form, - "tags_string": tags_string, "mode": mode, } diff --git a/bookmarks/templatetags/pagination.py b/bookmarks/templatetags/pagination.py index eff59002..bb46e1e2 100644 --- a/bookmarks/templatetags/pagination.py +++ b/bookmarks/templatetags/pagination.py @@ -2,6 +2,7 @@ from django import template from django.core.paginator import Page +from django.http import QueryDict NUM_ADJACENT_PAGES = 2 @@ -12,11 +13,44 @@ "bookmarks/pagination.html", name="pagination", takes_context=True ) def pagination(context, page: Page): + # remove page number and details from query parameters + query_params = context["request"].GET.copy() + query_params.pop("page", None) + query_params.pop("details", None) + + prev_link = ( + _generate_link(query_params, page.previous_page_number()) + if page.has_previous() + else None + ) + next_link = ( + _generate_link(query_params, page.next_page_number()) + if page.has_next() + else None + ) + visible_page_numbers = get_visible_page_numbers( page.number, page.paginator.num_pages ) + page_links = [] + for page_number in visible_page_numbers: + if page_number == -1: + page_links.append(None) + else: + link = _generate_link(query_params, page_number) + page_links.append( + { + "active": page_number == page.number, + "number": page_number, + "link": link, + } + ) - return {"page": page, "visible_page_numbers": visible_page_numbers} + return { + "prev_link": prev_link, + "next_link": next_link, + "page_links": page_links, + } def get_visible_page_numbers(current_page_number: int, num_pages: int) -> [int]: @@ -56,3 +90,8 @@ def append_page(result: [int], page_number: int): return result return reduce(append_page, visible_pages, []) + + +def _generate_link(query_params: QueryDict, page_number: int) -> str: + query_params["page"] = page_number + return query_params.urlencode() diff --git a/bookmarks/templatetags/shared.py b/bookmarks/templatetags/shared.py index 6524c112..5da3c1c3 100644 --- a/bookmarks/templatetags/shared.py +++ b/bookmarks/templatetags/shared.py @@ -28,12 +28,13 @@ def add_tag_to_query(context, tag_name: str): params = context.request.GET.copy() # Append to or create query string - if params.__contains__("q"): - query_string = params.__getitem__("q") + " " - else: - query_string = "" - query_string = query_string + "#" + tag_name - params.__setitem__("q", query_string) + query_string = params.get("q", "") + query_string = (query_string + " #" + tag_name).strip() + params.setlist("q", [query_string]) + + # Remove details ID and page number + params.pop("details", None) + params.pop("page", None) return params.urlencode() @@ -62,6 +63,10 @@ def remove_tag_from_query(context, tag_name: str): query_string = " ".join(query_parts) params.__setitem__("q", query_string) + # Remove details ID and page number + params.pop("details", None) + params.pop("page", None) + return params.urlencode() diff --git a/bookmarks/tests/helpers.py b/bookmarks/tests/helpers.py index dd97f2d9..4a5f016d 100644 --- a/bookmarks/tests/helpers.py +++ b/bookmarks/tests/helpers.py @@ -2,6 +2,7 @@ import logging from datetime import datetime from typing import List +from unittest import TestCase from bs4 import BeautifulSoup from django.contrib.auth.models import User @@ -220,6 +221,75 @@ def make_soup(self, html: str): return BeautifulSoup(html, features="html.parser") +class BookmarkListTestMixin(TestCase, HtmlTestMixin): + def assertVisibleBookmarks( + self, response, bookmarks: List[Bookmark], link_target: str = "_blank" + ): + soup = self.make_soup(response.content.decode()) + bookmark_list = soup.select_one( + f'ul.bookmark-list[data-bookmarks-total="{len(bookmarks)}"]' + ) + self.assertIsNotNone(bookmark_list) + + bookmark_items = bookmark_list.select("li[ld-bookmark-item]") + self.assertEqual(len(bookmark_items), len(bookmarks)) + + for bookmark in bookmarks: + bookmark_item = bookmark_list.select_one( + f'li[ld-bookmark-item] a[href="{bookmark.url}"][target="{link_target}"]' + ) + self.assertIsNotNone(bookmark_item) + + def assertInvisibleBookmarks( + self, response, bookmarks: List[Bookmark], link_target: str = "_blank" + ): + soup = self.make_soup(response.content.decode()) + + for bookmark in bookmarks: + bookmark_item = soup.select_one( + f'li[ld-bookmark-item] a[href="{bookmark.url}"][target="{link_target}"]' + ) + self.assertIsNone(bookmark_item) + + +class TagCloudTestMixin(TestCase, HtmlTestMixin): + def assertVisibleTags(self, response, tags: List[Tag]): + soup = self.make_soup(response.content.decode()) + tag_cloud = soup.select_one("div.tag-cloud") + self.assertIsNotNone(tag_cloud) + + tag_items = tag_cloud.select("a[data-is-tag-item]") + self.assertEqual(len(tag_items), len(tags)) + + tag_item_names = [tag_item.text.strip() for tag_item in tag_items] + + for tag in tags: + self.assertTrue(tag.name in tag_item_names) + + def assertInvisibleTags(self, response, tags: List[Tag]): + soup = self.make_soup(response.content.decode()) + tag_items = soup.select("a[data-is-tag-item]") + + tag_item_names = [tag_item.text.strip() for tag_item in tag_items] + + for tag in tags: + self.assertFalse(tag.name in tag_item_names) + + def assertSelectedTags(self, response, tags: List[Tag]): + soup = self.make_soup(response.content.decode()) + selected_tags = soup.select_one("p.selected-tags") + self.assertIsNotNone(selected_tags) + + tag_list = selected_tags.select("a") + self.assertEqual(len(tag_list), len(tags)) + + for tag in tags: + self.assertTrue( + tag.name in selected_tags.text, + msg=f"Selected tags do not contain: {tag.name}", + ) + + class LinkdingApiTestCase(APITestCase): def get(self, url, expected_status_code=status.HTTP_200_OK): response = self.client.get(url) diff --git a/bookmarks/tests/test_bookmark_action_view.py b/bookmarks/tests/test_bookmark_action_view.py index 658cb5ac..998a825f 100644 --- a/bookmarks/tests/test_bookmark_action_view.py +++ b/bookmarks/tests/test_bookmark_action_view.py @@ -1,13 +1,24 @@ +from unittest.mock import patch + from django.contrib.auth.models import User +from django.core.files.uploadedfile import SimpleUploadedFile from django.forms import model_to_dict -from django.test import TestCase +from django.http import HttpResponse +from django.test import TestCase, override_settings from django.urls import reverse -from bookmarks.models import Bookmark -from bookmarks.tests.helpers import BookmarkFactoryMixin +from bookmarks.models import Bookmark, BookmarkAsset +from bookmarks.services import tasks, bookmarks +from bookmarks.tests.helpers import ( + BookmarkFactoryMixin, + BookmarkListTestMixin, + TagCloudTestMixin, +) -class BookmarkActionViewTestCase(TestCase, BookmarkFactoryMixin): +class BookmarkActionViewTestCase( + TestCase, BookmarkFactoryMixin, BookmarkListTestMixin, TagCloudTestMixin +): def setUp(self) -> None: user = self.get_or_create_test_user() @@ -156,6 +167,129 @@ def test_can_only_unshare_own_bookmarks(self): self.assertEqual(response.status_code, 404) self.assertTrue(bookmark.shared) + @override_settings(LD_ENABLE_SNAPSHOTS=True) + def test_create_html_snapshot(self): + bookmark = self.setup_bookmark() + with patch.object(tasks, "_create_html_snapshot_task"): + self.client.post( + reverse("bookmarks:index.action"), + { + "create_html_snapshot": [bookmark.id], + }, + ) + self.assertEqual(bookmark.bookmarkasset_set.count(), 1) + asset = bookmark.bookmarkasset_set.first() + self.assertEqual(asset.asset_type, BookmarkAsset.TYPE_SNAPSHOT) + + @override_settings(LD_ENABLE_SNAPSHOTS=True) + def test_can_only_create_html_snapshot_for_own_bookmarks(self): + other_user = self.setup_user() + bookmark = self.setup_bookmark(user=other_user) + with patch.object(tasks, "_create_html_snapshot_task"): + response = self.client.post( + reverse("bookmarks:index.action"), + { + "create_html_snapshot": [bookmark.id], + }, + ) + self.assertEqual(response.status_code, 404) + self.assertEqual(bookmark.bookmarkasset_set.count(), 0) + + def test_upload_asset(self): + bookmark = self.setup_bookmark() + file_content = b"file content" + upload_file = SimpleUploadedFile("test.txt", file_content) + + with patch.object(bookmarks, "upload_asset") as mock_upload_asset: + response = self.client.post( + reverse("bookmarks:index.action"), + {"upload_asset": bookmark.id, "upload_asset_file": upload_file}, + ) + self.assertEqual(response.status_code, 302) + + mock_upload_asset.assert_called_once() + + args, _ = mock_upload_asset.call_args + self.assertEqual(args[0], bookmark) + + upload_file = args[1] + self.assertEqual(upload_file.name, "test.txt") + + def test_can_only_upload_asset_for_own_bookmarks(self): + other_user = self.setup_user() + bookmark = self.setup_bookmark(user=other_user) + file_content = b"file content" + upload_file = SimpleUploadedFile("test.txt", file_content) + + with patch.object(bookmarks, "upload_asset") as mock_upload_asset: + response = self.client.post( + reverse("bookmarks:index.action"), + {"upload_asset": bookmark.id, "upload_asset_file": upload_file}, + ) + self.assertEqual(response.status_code, 404) + + mock_upload_asset.assert_not_called() + + def test_remove_asset(self): + bookmark = self.setup_bookmark() + asset = self.setup_asset(bookmark) + + response = self.client.post( + reverse("bookmarks:index.action"), {"remove_asset": asset.id} + ) + self.assertEqual(response.status_code, 302) + self.assertFalse(BookmarkAsset.objects.filter(id=asset.id).exists()) + + def test_can_only_remove_own_asset(self): + other_user = self.setup_user() + bookmark = self.setup_bookmark(user=other_user) + asset = self.setup_asset(bookmark) + + response = self.client.post( + reverse("bookmarks:index.action"), {"remove_asset": asset.id} + ) + self.assertEqual(response.status_code, 404) + self.assertTrue(BookmarkAsset.objects.filter(id=asset.id).exists()) + + def test_update_state(self): + bookmark = self.setup_bookmark() + + response = self.client.post( + reverse("bookmarks:index.action"), + { + "update_state": bookmark.id, + "is_archived": "on", + "unread": "on", + "shared": "on", + }, + ) + self.assertEqual(response.status_code, 302) + + bookmark.refresh_from_db() + self.assertTrue(bookmark.unread) + self.assertTrue(bookmark.is_archived) + self.assertTrue(bookmark.shared) + + def test_can_only_update_own_bookmark_state(self): + other_user = self.setup_user() + bookmark = self.setup_bookmark(user=other_user) + + response = self.client.post( + reverse("bookmarks:index.action"), + { + "update_state": bookmark.id, + "is_archived": "on", + "unread": "on", + "shared": "on", + }, + ) + self.assertEqual(response.status_code, 404) + + bookmark.refresh_from_db() + self.assertFalse(bookmark.unread) + self.assertFalse(bookmark.is_archived) + self.assertFalse(bookmark.shared) + def test_bulk_archive(self): bookmark1 = self.setup_bookmark() bookmark2 = self.setup_bookmark() @@ -791,58 +925,119 @@ def test_empty_action_does_not_modify_bookmarks(self): self.assertBookmarksAreUnmodified([bookmark1, bookmark2, bookmark3]) - def test_should_redirect_to_return_url(self): - bookmark1 = self.setup_bookmark() - bookmark2 = self.setup_bookmark() - bookmark3 = self.setup_bookmark() + def test_index_action_redirects_to_index_with_query_params(self): + url = reverse("bookmarks:index.action") + "?q=foo&page=2" + redirect_url = reverse("bookmarks:index") + "?q=foo&page=2" + response = self.client.post(url) + + self.assertRedirects(response, redirect_url) + + def test_archived_action_redirects_to_archived_with_query_params(self): + url = reverse("bookmarks:archived.action") + "?q=foo&page=2" + redirect_url = reverse("bookmarks:archived") + "?q=foo&page=2" + response = self.client.post(url) + + self.assertRedirects(response, redirect_url) + + def test_shared_action_redirects_to_shared_with_query_params(self): + url = reverse("bookmarks:shared.action") + "?q=foo&page=2" + redirect_url = reverse("bookmarks:shared") + "?q=foo&page=2" + response = self.client.post(url) + + self.assertRedirects(response, redirect_url) + + def bookmark_update_fixture(self): + user = self.get_or_create_test_user() + profile = user.profile + profile.enable_sharing = True + profile.save() + + return { + "active": self.setup_numbered_bookmarks(3), + "archived": self.setup_numbered_bookmarks(3, archived=True), + "shared": self.setup_numbered_bookmarks(3, shared=True), + } + + def assertBookmarkUpdateResponse(self, response: HttpResponse): + self.assertEqual(response.status_code, 200) + + html = response.content.decode("utf-8") + soup = self.make_soup(html) + + # bookmark list update + self.assertIsNotNone( + soup.select_one( + "turbo-stream[action='update'][target='bookmark-list-container']" + ) + ) - url = ( - reverse("bookmarks:index.action") - + "?return_url=" - + reverse("bookmarks:settings.index") + # tag cloud update + self.assertIsNotNone( + soup.select_one( + "turbo-stream[action='update'][target='tag-cloud-container']" + ) ) + + # update event + self.assertInHTML( + """ + + """, + html, + ) + + def test_index_action_with_turbo_returns_bookmark_update(self): + fixture = self.bookmark_update_fixture() response = self.client.post( - url, - { - "bulk_action": ["bulk_archive"], - "bulk_execute": [""], - "bookmark_id": [ - str(bookmark1.id), - str(bookmark2.id), - str(bookmark3.id), - ], - }, + reverse("bookmarks:index.action"), + HTTP_ACCEPT="text/vnd.turbo-stream.html", ) - self.assertRedirects(response, reverse("bookmarks:settings.index")) + visible_tags = self.get_tags_from_bookmarks( + fixture["active"] + fixture["shared"] + ) + invisible_tags = self.get_tags_from_bookmarks(fixture["archived"]) - def test_should_not_redirect_to_external_url(self): - bookmark1 = self.setup_bookmark() - bookmark2 = self.setup_bookmark() - bookmark3 = self.setup_bookmark() + self.assertBookmarkUpdateResponse(response) + self.assertVisibleBookmarks(response, fixture["active"] + fixture["shared"]) + self.assertInvisibleBookmarks(response, fixture["archived"]) + self.assertVisibleTags(response, visible_tags) + self.assertInvisibleTags(response, invisible_tags) - def post_with(return_url, follow=None): - url = reverse("bookmarks:index.action") + f"?return_url={return_url}" - return self.client.post( - url, - { - "bulk_action": ["bulk_archive"], - "bulk_execute": [""], - "bookmark_id": [ - str(bookmark1.id), - str(bookmark2.id), - str(bookmark3.id), - ], - }, - follow=follow, - ) + def test_archived_action_with_turbo_returns_bookmark_update(self): + fixture = self.bookmark_update_fixture() + response = self.client.post( + reverse("bookmarks:archived.action"), + HTTP_ACCEPT="text/vnd.turbo-stream.html", + ) - response = post_with("https://example.com") - self.assertRedirects(response, reverse("bookmarks:index")) - response = post_with("//example.com") - self.assertRedirects(response, reverse("bookmarks:index")) - response = post_with("://example.com") - self.assertRedirects(response, reverse("bookmarks:index")) + visible_tags = self.get_tags_from_bookmarks(fixture["archived"]) + invisible_tags = self.get_tags_from_bookmarks( + fixture["active"] + fixture["shared"] + ) - response = post_with("/foo//example.com", follow=True) - self.assertEqual(response.status_code, 404) + self.assertBookmarkUpdateResponse(response) + self.assertVisibleBookmarks(response, fixture["archived"]) + self.assertInvisibleBookmarks(response, fixture["active"] + fixture["shared"]) + self.assertVisibleTags(response, visible_tags) + self.assertInvisibleTags(response, invisible_tags) + + def test_shared_action_with_turbo_returns_bookmark_update(self): + fixture = self.bookmark_update_fixture() + response = self.client.post( + reverse("bookmarks:shared.action"), + HTTP_ACCEPT="text/vnd.turbo-stream.html", + ) + + visible_tags = self.get_tags_from_bookmarks(fixture["shared"]) + invisible_tags = self.get_tags_from_bookmarks( + fixture["active"] + fixture["archived"] + ) + + self.assertBookmarkUpdateResponse(response) + self.assertVisibleBookmarks(response, fixture["shared"]) + self.assertInvisibleBookmarks(response, fixture["active"] + fixture["archived"]) + self.assertVisibleTags(response, visible_tags) + self.assertInvisibleTags(response, invisible_tags) diff --git a/bookmarks/tests/test_bookmark_archived_view.py b/bookmarks/tests/test_bookmark_archived_view.py index 4b357b6e..040a5f8c 100644 --- a/bookmarks/tests/test_bookmark_archived_view.py +++ b/bookmarks/tests/test_bookmark_archived_view.py @@ -1,89 +1,26 @@ import urllib.parse -from typing import List from django.contrib.auth.models import User from django.test import TestCase from django.urls import reverse -from bookmarks.models import Bookmark, BookmarkSearch, Tag, UserProfile +from bookmarks.models import BookmarkSearch, UserProfile from bookmarks.tests.helpers import ( BookmarkFactoryMixin, - HtmlTestMixin, + BookmarkListTestMixin, + TagCloudTestMixin, collapse_whitespace, ) -class BookmarkArchivedViewTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin): +class BookmarkArchivedViewTestCase( + TestCase, BookmarkFactoryMixin, BookmarkListTestMixin, TagCloudTestMixin +): def setUp(self) -> None: user = self.get_or_create_test_user() self.client.force_login(user) - def assertVisibleBookmarks( - self, response, bookmarks: List[Bookmark], link_target: str = "_blank" - ): - soup = self.make_soup(response.content.decode()) - bookmark_list = soup.select_one( - f'ul.bookmark-list[data-bookmarks-total="{len(bookmarks)}"]' - ) - self.assertIsNotNone(bookmark_list) - - bookmark_items = bookmark_list.select("li[ld-bookmark-item]") - self.assertEqual(len(bookmark_items), len(bookmarks)) - - for bookmark in bookmarks: - bookmark_item = bookmark_list.select_one( - f'li[ld-bookmark-item] a[href="{bookmark.url}"][target="{link_target}"]' - ) - self.assertIsNotNone(bookmark_item) - - def assertInvisibleBookmarks( - self, response, bookmarks: List[Bookmark], link_target: str = "_blank" - ): - soup = self.make_soup(response.content.decode()) - - for bookmark in bookmarks: - bookmark_item = soup.select_one( - f'li[ld-bookmark-item] a[href="{bookmark.url}"][target="{link_target}"]' - ) - self.assertIsNone(bookmark_item) - - def assertVisibleTags(self, response, tags: List[Tag]): - soup = self.make_soup(response.content.decode()) - tag_cloud = soup.select_one("div.tag-cloud") - self.assertIsNotNone(tag_cloud) - - tag_items = tag_cloud.select("a[data-is-tag-item]") - self.assertEqual(len(tag_items), len(tags)) - - tag_item_names = [tag_item.text.strip() for tag_item in tag_items] - - for tag in tags: - self.assertTrue(tag.name in tag_item_names) - - def assertInvisibleTags(self, response, tags: List[Tag]): - soup = self.make_soup(response.content.decode()) - tag_items = soup.select("a[data-is-tag-item]") - - tag_item_names = [tag_item.text.strip() for tag_item in tag_items] - - for tag in tags: - self.assertFalse(tag.name in tag_item_names) - - def assertSelectedTags(self, response, tags: List[Tag]): - soup = self.make_soup(response.content.decode()) - selected_tags = soup.select_one("p.selected-tags") - self.assertIsNotNone(selected_tags) - - tag_list = selected_tags.select("a") - self.assertEqual(len(tag_list), len(tags)) - - for tag in tags: - self.assertTrue( - tag.name in selected_tags.text, - msg=f"Selected tags do not contain: {tag.name}", - ) - def assertEditLink(self, response, url): html = response.content.decode() self.assertInHTML( @@ -307,24 +244,21 @@ def test_bulk_edit_respects_search_options(self): base_url = reverse("bookmarks:archived") # without params - return_url = urllib.parse.quote_plus(base_url) - url = f"{action_url}?return_url={return_url}" + url = f"{action_url}" response = self.client.get(base_url) self.assertBulkActionForm(response, url) # with query url_params = "?q=foo" - return_url = urllib.parse.quote_plus(base_url + url_params) - url = f"{action_url}?q=foo&return_url={return_url}" + url = f"{action_url}?q=foo" response = self.client.get(base_url + url_params) self.assertBulkActionForm(response, url) # with query and sort url_params = "?q=foo&sort=title_asc" - return_url = urllib.parse.quote_plus(base_url + url_params) - url = f"{action_url}?q=foo&sort=title_asc&return_url={return_url}" + url = f"{action_url}?q=foo&sort=title_asc" response = self.client.get(base_url + url_params) self.assertBulkActionForm(response, url) @@ -527,7 +461,7 @@ def test_url_encode_bookmark_actions_url(self): self.assertEqual( actions_form.attrs["action"], - "/bookmarks/archived/action?q=%23foo&return_url=%2Fbookmarks%2Farchived%3Fq%3D%2523foo", + "/bookmarks/archived/action?q=%23foo", ) def test_encode_search_params(self): @@ -557,3 +491,15 @@ def test_encode_search_params(self): url = reverse("bookmarks:archived") + "?page=alert(%27xss%27)" response = self.client.get(url) self.assertNotContains(response, "alert('xss')") + + def test_turbo_frame_details_modal_renders_details_modal_update(self): + bookmark = self.setup_bookmark() + url = reverse("bookmarks:archived") + f"?bookmark_id={bookmark.id}" + response = self.client.get(url, headers={"Turbo-Frame": "details-modal"}) + + self.assertEqual(200, response.status_code) + + soup = self.make_soup(response.content.decode()) + self.assertIsNotNone(soup.select_one("turbo-frame#details-modal")) + self.assertIsNone(soup.select_one("#bookmark-list-container")) + self.assertIsNone(soup.select_one("#tag-cloud-container")) diff --git a/bookmarks/tests/test_bookmark_details_modal.py b/bookmarks/tests/test_bookmark_details_modal.py index a2ef4ad2..291d149c 100644 --- a/bookmarks/tests/test_bookmark_details_modal.py +++ b/bookmarks/tests/test_bookmark_details_modal.py @@ -1,14 +1,11 @@ import datetime import re -from unittest.mock import patch -from django.core.files.uploadedfile import SimpleUploadedFile from django.test import TestCase, override_settings from django.urls import reverse from django.utils import formats, timezone from bookmarks.models import BookmarkAsset, UserProfile -from bookmarks.services import bookmarks, tasks from bookmarks.tests.helpers import BookmarkFactoryMixin, HtmlTestMixin @@ -17,23 +14,23 @@ def setUp(self): user = self.get_or_create_test_user() self.client.force_login(user) - def get_view_name(self): - return "bookmarks:details_modal" - - def get_base_url(self, bookmark): - return reverse(self.get_view_name(), args=[bookmark.id]) - def get_details_form(self, soup, bookmark): - expected_url = reverse("bookmarks:details", args=[bookmark.id]) - return soup.find("form", {"action": expected_url}) + form_url = reverse("bookmarks:index.action") + f"?details={bookmark.id}" + return soup.find("form", {"action": form_url, "enctype": "multipart/form-data"}) + + def get_index_details_modal(self, bookmark): + url = reverse("bookmarks:index") + f"?details={bookmark.id}" + response = self.client.get(url) + soup = self.make_soup(response.content) + modal = soup.find("turbo-frame", {"id": "details-modal"}) + return modal - def get_details(self, bookmark, return_url=""): - url = self.get_base_url(bookmark) - if return_url: - url += f"?return_url={return_url}" + def get_shared_details_modal(self, bookmark): + url = reverse("bookmarks:shared") + f"?details={bookmark.id}" response = self.client.get(url) soup = self.make_soup(response.content) - return soup + modal = soup.find("turbo-frame", {"id": "details-modal"}) + return modal def find_section(self, soup, section_name): dt = soup.find("dt", string=section_name) @@ -54,35 +51,68 @@ def count_weblinks(self, soup): def find_asset(self, soup, asset): return soup.find("div", {"data-asset-id": asset.id}) - def details_route_access_test(self, view_name: str, shareable: bool): + def details_route_access_test(self): # own bookmark bookmark = self.setup_bookmark() - - response = self.client.get(reverse(view_name, args=[bookmark.id])) + response = self.client.get( + reverse("bookmarks:index") + f"?details={bookmark.id}" + ) self.assertEqual(response.status_code, 200) # other user's bookmark other_user = self.setup_user() bookmark = self.setup_bookmark(user=other_user) + response = self.client.get( + reverse("bookmarks:index") + f"?details={bookmark.id}" + ) + self.assertEqual(response.status_code, 404) - response = self.client.get(reverse(view_name, args=[bookmark.id])) + # non-existent bookmark - just returns without modal in response + response = self.client.get(reverse("bookmarks:index") + "?details=9999") + self.assertEqual(response.status_code, 200) + + # guest user + self.client.logout() + response = self.client.get( + reverse("bookmarks:shared") + f"?details={bookmark.id}" + ) self.assertEqual(response.status_code, 404) - # non-existent bookmark - response = self.client.get(reverse(view_name, args=[9999])) + def test_access(self): + # own bookmark + bookmark = self.setup_bookmark() + response = self.client.get( + reverse("bookmarks:index") + f"?details={bookmark.id}" + ) + self.assertEqual(response.status_code, 200) + + # other user's bookmark + other_user = self.setup_user() + bookmark = self.setup_bookmark(user=other_user) + response = self.client.get( + reverse("bookmarks:index") + f"?details={bookmark.id}" + ) self.assertEqual(response.status_code, 404) + # non-existent bookmark - just returns without modal in response + response = self.client.get(reverse("bookmarks:index") + "?details=9999") + self.assertEqual(response.status_code, 200) + # guest user self.client.logout() - response = self.client.get(reverse(view_name, args=[bookmark.id])) - self.assertEqual(response.status_code, 404 if shareable else 302) + response = self.client.get( + reverse("bookmarks:shared") + f"?details={bookmark.id}" + ) + self.assertEqual(response.status_code, 404) - def details_route_sharing_access_test(self, view_name: str, shareable: bool): + def test_access_with_sharing(self): # shared bookmark, sharing disabled other_user = self.setup_user() bookmark = self.setup_bookmark(shared=True, user=other_user) - response = self.client.get(reverse(view_name, args=[bookmark.id])) + response = self.client.get( + reverse("bookmarks:shared") + f"?details={bookmark.id}" + ) self.assertEqual(response.status_code, 404) # shared bookmark, sharing enabled @@ -90,37 +120,31 @@ def details_route_sharing_access_test(self, view_name: str, shareable: bool): profile.enable_sharing = True profile.save() - response = self.client.get(reverse(view_name, args=[bookmark.id])) - self.assertEqual(response.status_code, 200 if shareable else 404) + response = self.client.get( + reverse("bookmarks:shared") + f"?details={bookmark.id}" + ) + self.assertEqual(response.status_code, 200) # shared bookmark, guest user, no public sharing self.client.logout() - response = self.client.get(reverse(view_name, args=[bookmark.id])) - self.assertEqual(response.status_code, 404 if shareable else 302) + response = self.client.get( + reverse("bookmarks:shared") + f"?details={bookmark.id}" + ) + self.assertEqual(response.status_code, 404) # shared bookmark, guest user, public sharing profile.enable_public_sharing = True profile.save() - response = self.client.get(reverse(view_name, args=[bookmark.id])) - self.assertEqual(response.status_code, 200 if shareable else 302) - - def test_access(self): - self.details_route_access_test(self.get_view_name(), True) - - def test_access_with_sharing(self): - self.details_route_sharing_access_test(self.get_view_name(), True) - - def test_assets_access(self): - self.details_route_access_test("bookmarks:details_assets", True) - - def test_assets_access_with_sharing(self): - self.details_route_sharing_access_test("bookmarks:details_assets", True) + response = self.client.get( + reverse("bookmarks:shared") + f"?details={bookmark.id}" + ) + self.assertEqual(response.status_code, 200) def test_displays_title(self): # with title bookmark = self.setup_bookmark(title="Test title") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) title = soup.find("h2") self.assertIsNotNone(title) @@ -128,7 +152,7 @@ def test_displays_title(self): # with website title bookmark = self.setup_bookmark(title="", website_title="Website title") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) title = soup.find("h2") self.assertIsNotNone(title) @@ -136,7 +160,7 @@ def test_displays_title(self): # with URL only bookmark = self.setup_bookmark(title="", website_title="") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) title = soup.find("h2") self.assertIsNotNone(title) @@ -145,7 +169,7 @@ def test_displays_title(self): def test_website_link(self): # basics bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) link = self.find_weblink(soup, bookmark.url) self.assertIsNotNone(link) self.assertEqual(link["href"], bookmark.url) @@ -153,7 +177,7 @@ def test_website_link(self): # favicons disabled bookmark = self.setup_bookmark(favicon_file="example.png") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) link = self.find_weblink(soup, bookmark.url) image = link.select_one("img") self.assertIsNone(image) @@ -164,14 +188,14 @@ def test_website_link(self): profile.save() bookmark = self.setup_bookmark(favicon_file="") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) link = self.find_weblink(soup, bookmark.url) image = link.select_one("img") self.assertIsNone(image) # favicons enabled, favicon present bookmark = self.setup_bookmark(favicon_file="example.png") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) link = self.find_weblink(soup, bookmark.url) image = link.select_one("img") self.assertIsNotNone(image) @@ -180,7 +204,7 @@ def test_website_link(self): def test_reader_mode_link(self): # no latest snapshot bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) self.assertEqual(self.count_weblinks(soup), 2) # snapshot is not complete @@ -194,7 +218,7 @@ def test_reader_mode_link(self): asset_type=BookmarkAsset.TYPE_SNAPSHOT, status=BookmarkAsset.STATUS_FAILURE, ) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) self.assertEqual(self.count_weblinks(soup), 2) # not a snapshot @@ -203,7 +227,7 @@ def test_reader_mode_link(self): asset_type="upload", status=BookmarkAsset.STATUS_COMPLETE, ) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) self.assertEqual(self.count_weblinks(soup), 2) # snapshot is complete @@ -212,7 +236,7 @@ def test_reader_mode_link(self): asset_type=BookmarkAsset.TYPE_SNAPSHOT, status=BookmarkAsset.STATUS_COMPLETE, ) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) self.assertEqual(self.count_weblinks(soup), 3) reader_mode_url = reverse("bookmarks:assets.read", args=[asset.id]) @@ -221,7 +245,7 @@ def test_reader_mode_link(self): def test_internet_archive_link_with_snapshot_url(self): bookmark = self.setup_bookmark(web_archive_snapshot_url="https://example.com/") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) link = self.find_weblink(soup, bookmark.web_archive_snapshot_url) self.assertIsNotNone(link) self.assertEqual(link["href"], bookmark.web_archive_snapshot_url) @@ -231,7 +255,7 @@ def test_internet_archive_link_with_snapshot_url(self): bookmark = self.setup_bookmark( web_archive_snapshot_url="https://example.com/", favicon_file="example.png" ) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) link = self.find_weblink(soup, bookmark.web_archive_snapshot_url) image = link.select_one("svg") self.assertIsNone(image) @@ -244,7 +268,7 @@ def test_internet_archive_link_with_snapshot_url(self): bookmark = self.setup_bookmark( web_archive_snapshot_url="https://example.com/", favicon_file="" ) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) link = self.find_weblink(soup, bookmark.web_archive_snapshot_url) image = link.select_one("svg") self.assertIsNone(image) @@ -253,7 +277,7 @@ def test_internet_archive_link_with_snapshot_url(self): bookmark = self.setup_bookmark( web_archive_snapshot_url="https://example.com/", favicon_file="example.png" ) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) link = self.find_weblink(soup, bookmark.web_archive_snapshot_url) image = link.select_one("svg") self.assertIsNotNone(image) @@ -267,7 +291,7 @@ def test_internet_archive_link_with_fallback_url(self): "https://web.archive.org/web/20230811214511/https://example.com/" ) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) link = self.find_weblink(soup, fallback_web_archive_url) self.assertIsNotNone(link) self.assertEqual(link["href"], fallback_web_archive_url) @@ -281,7 +305,7 @@ def test_weblinks_respect_target_setting(self): profile.bookmark_link_target = UserProfile.BOOKMARK_LINK_TARGET_BLANK profile.save() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) website_link = self.find_weblink(soup, bookmark.url) self.assertIsNotNone(website_link) @@ -297,7 +321,7 @@ def test_weblinks_respect_target_setting(self): profile.bookmark_link_target = UserProfile.BOOKMARK_LINK_TARGET_SELF profile.save() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) website_link = self.find_weblink(soup, bookmark.url) self.assertIsNotNone(website_link) @@ -312,13 +336,13 @@ def test_weblinks_respect_target_setting(self): def test_preview_image(self): # without image bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) image = soup.select_one("div.preview-image img") self.assertIsNone(image) # with image bookmark = self.setup_bookmark(preview_image_file="example.png") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) image = soup.select_one("div.preview-image img") self.assertIsNone(image) @@ -328,13 +352,13 @@ def test_preview_image(self): profile.save() bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) image = soup.select_one("div.preview-image img") self.assertIsNone(image) # preview images enabled, image present bookmark = self.setup_bookmark(preview_image_file="example.png") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) image = soup.select_one("div.preview-image img") self.assertIsNotNone(image) self.assertEqual(image["src"], "/static/example.png") @@ -342,18 +366,15 @@ def test_preview_image(self): def test_status(self): # renders form bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) form = self.get_details_form(soup, bookmark) self.assertIsNotNone(form) - self.assertEqual( - form["action"], reverse("bookmarks:details", args=[bookmark.id]) - ) self.assertEqual(form["method"], "post") # sharing disabled bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Status") archived = section.find("input", {"type": "checkbox", "name": "is_archived"}) @@ -369,7 +390,7 @@ def test_status(self): profile.save() bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Status") archived = section.find("input", {"type": "checkbox", "name": "is_archived"}) @@ -381,7 +402,7 @@ def test_status(self): # unchecked bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Status") archived = section.find("input", {"type": "checkbox", "name": "is_archived"}) @@ -393,7 +414,7 @@ def test_status(self): # checked bookmark = self.setup_bookmark(is_archived=True, unread=True, shared=True) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Status") archived = section.find("input", {"type": "checkbox", "name": "is_archived"}) @@ -406,106 +427,29 @@ def test_status(self): def test_status_visibility(self): # own bookmark bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.find_section(soup, "Status") self.assertIsNotNone(section) # other user's bookmark other_user = self.setup_user(enable_sharing=True) bookmark = self.setup_bookmark(user=other_user, shared=True) - soup = self.get_details(bookmark) + soup = self.get_shared_details_modal(bookmark) section = self.find_section(soup, "Status") self.assertIsNone(section) # guest user self.client.logout() + other_user.profile.enable_public_sharing = True + other_user.profile.save() bookmark = self.setup_bookmark(user=other_user, shared=True) - soup = self.get_details(bookmark) + soup = self.get_shared_details_modal(bookmark) section = self.find_section(soup, "Status") self.assertIsNone(section) - def test_status_update(self): - bookmark = self.setup_bookmark() - - # update status - response = self.client.post( - self.get_base_url(bookmark), - {"is_archived": "on", "unread": "on", "shared": "on"}, - ) - self.assertEqual(response.status_code, 302) - - bookmark.refresh_from_db() - self.assertTrue(bookmark.is_archived) - self.assertTrue(bookmark.unread) - self.assertTrue(bookmark.shared) - - # update individual status - response = self.client.post( - self.get_base_url(bookmark), - {"is_archived": "", "unread": "on", "shared": ""}, - ) - self.assertEqual(response.status_code, 302) - - bookmark.refresh_from_db() - self.assertFalse(bookmark.is_archived) - self.assertTrue(bookmark.unread) - self.assertFalse(bookmark.shared) - - def test_status_update_access(self): - # no sharing - other_user = self.setup_user() - bookmark = self.setup_bookmark(user=other_user) - response = self.client.post( - self.get_base_url(bookmark), - {"is_archived": "on", "unread": "on", "shared": "on"}, - ) - self.assertEqual(response.status_code, 404) - - # shared, sharing disabled - bookmark = self.setup_bookmark(user=other_user, shared=True) - response = self.client.post( - self.get_base_url(bookmark), - {"is_archived": "on", "unread": "on", "shared": "on"}, - ) - self.assertEqual(response.status_code, 404) - - # shared, sharing enabled - bookmark = self.setup_bookmark(user=other_user, shared=True) - profile = other_user.profile - profile.enable_sharing = True - profile.save() - - response = self.client.post( - self.get_base_url(bookmark), - {"is_archived": "on", "unread": "on", "shared": "on"}, - ) - self.assertEqual(response.status_code, 404) - - # shared, public sharing enabled - bookmark = self.setup_bookmark(user=other_user, shared=True) - profile = other_user.profile - profile.enable_public_sharing = True - profile.save() - - response = self.client.post( - self.get_base_url(bookmark), - {"is_archived": "on", "unread": "on", "shared": "on"}, - ) - self.assertEqual(response.status_code, 404) - - # guest user - self.client.logout() - bookmark = self.setup_bookmark(user=other_user, shared=True) - - response = self.client.post( - self.get_base_url(bookmark), - {"is_archived": "on", "unread": "on", "shared": "on"}, - ) - self.assertEqual(response.status_code, 404) - def test_date_added(self): bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Date added") expected_date = formats.date_format(bookmark.date_added, "DATETIME_FORMAT") @@ -515,7 +459,7 @@ def test_date_added(self): def test_tags(self): # without tags bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.find_section(soup, "Tags") self.assertIsNone(section) @@ -523,7 +467,7 @@ def test_tags(self): # with tags bookmark = self.setup_bookmark(tags=[self.setup_tag(), self.setup_tag()]) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Tags") for tag in bookmark.tags.all(): @@ -535,14 +479,14 @@ def test_tags(self): def test_description(self): # without description bookmark = self.setup_bookmark(description="", website_description="") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.find_section(soup, "Description") self.assertIsNone(section) # with description bookmark = self.setup_bookmark(description="Test description") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Description") self.assertEqual(section.text.strip(), bookmark.description) @@ -551,7 +495,7 @@ def test_description(self): bookmark = self.setup_bookmark( description="", website_description="Website description" ) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Description") self.assertEqual(section.text.strip(), bookmark.website_description) @@ -559,14 +503,14 @@ def test_description(self): def test_notes(self): # without notes bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.find_section(soup, "Notes") self.assertIsNone(section) # with notes bookmark = self.setup_bookmark(notes="Test notes") - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Notes") self.assertEqual(section.decode_contents(), "

    Test notes

    ") @@ -575,52 +519,42 @@ def test_edit_link(self): bookmark = self.setup_bookmark() # with default return URL - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) edit_link = soup.find("a", string="Edit") self.assertIsNotNone(edit_link) - details_url = reverse("bookmarks:details", args=[bookmark.id]) - expected_url = ( - reverse("bookmarks:edit", args=[bookmark.id]) + "?return_url=" + details_url - ) - self.assertEqual(edit_link["href"], expected_url) - - # with custom return URL - soup = self.get_details(bookmark, return_url="/custom") - edit_link = soup.find("a", string="Edit") - self.assertIsNotNone(edit_link) - expected_url = ( - reverse("bookmarks:edit", args=[bookmark.id]) + "?return_url=/custom" - ) - self.assertEqual(edit_link["href"], expected_url) + details_url = reverse("bookmarks:index") + f"?details={bookmark.id}" + expected_url = "/bookmarks/1/edit?return_url=/bookmarks%3Fdetails%3D1" + self.assertEqual(expected_url, edit_link["href"]) def test_delete_button(self): bookmark = self.setup_bookmark() - # basics - soup = self.get_details(bookmark) - delete_button = soup.find("button", {"type": "submit", "name": "remove"}) + modal = self.get_index_details_modal(bookmark) + delete_button = modal.find("button", {"type": "submit", "name": "remove"}) self.assertIsNotNone(delete_button) - self.assertEqual(delete_button.text.strip(), "Delete...") - self.assertEqual(delete_button["value"], str(bookmark.id)) + self.assertEqual("Delete...", delete_button.text.strip()) + self.assertEqual(str(bookmark.id), delete_button["value"]) form = delete_button.find_parent("form") self.assertIsNotNone(form) - expected_url = reverse("bookmarks:index.action") + f"?return_url=/bookmarks" - self.assertEqual(form["action"], expected_url) + expected_url = reverse("bookmarks:index.action") + self.assertEqual(expected_url, form["action"]) - # with custom return URL - soup = self.get_details(bookmark, return_url="/custom") + def test_actions_visibility(self): + # own bookmark + bookmark = self.setup_bookmark() + + soup = self.get_index_details_modal(bookmark) + edit_link = soup.find("a", string="Edit") delete_button = soup.find("button", {"type": "submit", "name": "remove"}) - form = delete_button.find_parent("form") - expected_url = reverse("bookmarks:index.action") + f"?return_url=/custom" - self.assertEqual(form["action"], expected_url) + self.assertIsNotNone(edit_link) + self.assertIsNotNone(delete_button) - def test_actions_visibility(self): # with sharing other_user = self.setup_user(enable_sharing=True) bookmark = self.setup_bookmark(user=other_user, shared=True) - soup = self.get_details(bookmark) + soup = self.get_shared_details_modal(bookmark) edit_link = soup.find("a", string="Edit") delete_button = soup.find("button", {"type": "submit", "name": "remove"}) self.assertIsNone(edit_link) @@ -632,7 +566,7 @@ def test_actions_visibility(self): profile.save() bookmark = self.setup_bookmark(user=other_user, shared=True) - soup = self.get_details(bookmark) + soup = self.get_shared_details_modal(bookmark) edit_link = soup.find("a", string="Edit") delete_button = soup.find("button", {"type": "submit", "name": "remove"}) self.assertIsNone(edit_link) @@ -642,7 +576,7 @@ def test_actions_visibility(self): self.client.logout() bookmark = self.setup_bookmark(user=other_user, shared=True) - soup = self.get_details(bookmark) + soup = self.get_shared_details_modal(bookmark) edit_link = soup.find("a", string="Edit") delete_button = soup.find("button", {"type": "submit", "name": "remove"}) self.assertIsNone(edit_link) @@ -651,7 +585,7 @@ def test_actions_visibility(self): def test_assets_visibility_no_snapshot_support(self): bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.find_section(soup, "Files") self.assertIsNone(section) @@ -659,7 +593,7 @@ def test_assets_visibility_no_snapshot_support(self): def test_assets_visibility_with_snapshot_support(self): bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.find_section(soup, "Files") self.assertIsNotNone(section) @@ -668,7 +602,7 @@ def test_asset_list_visibility(self): # no assets bookmark = self.setup_bookmark() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Files") asset_list = section.find("div", {"class": "assets"}) self.assertIsNone(asset_list) @@ -677,7 +611,7 @@ def test_asset_list_visibility(self): bookmark = self.setup_bookmark() self.setup_asset(bookmark) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Files") asset_list = section.find("div", {"class": "assets"}) self.assertIsNotNone(asset_list) @@ -691,7 +625,7 @@ def test_asset_list(self): self.setup_asset(bookmark), ] - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) section = self.get_section(soup, "Files") asset_list = section.find("div", {"class": "assets"}) @@ -717,7 +651,7 @@ def test_asset_without_file(self): asset.file = "" asset.save() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) asset_item = self.find_asset(soup, asset) view_url = reverse("bookmarks:assets.view", args=[asset.id]) view_link = asset_item.find("a", {"href": view_url}) @@ -729,7 +663,7 @@ def test_asset_status(self): pending_asset = self.setup_asset(bookmark, status=BookmarkAsset.STATUS_PENDING) failed_asset = self.setup_asset(bookmark, status=BookmarkAsset.STATUS_FAILURE) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) asset_item = self.find_asset(soup, pending_asset) asset_text = asset_item.select_one(".asset-text span") @@ -746,7 +680,7 @@ def test_asset_file_size(self): asset2 = self.setup_asset(bookmark, file_size=54639) asset3 = self.setup_asset(bookmark, file_size=11492020) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) asset_item = self.find_asset(soup, asset1) asset_text = asset_item.select_one(".asset-text") @@ -766,7 +700,7 @@ def test_asset_actions_visibility(self): # with file asset = self.setup_asset(bookmark) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) asset_item = self.find_asset(soup, asset) view_link = asset_item.find("a", string="View") @@ -779,7 +713,7 @@ def test_asset_actions_visibility(self): # without file asset.file = "" asset.save() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) asset_item = self.find_asset(soup, asset) view_link = asset_item.find("a", string="View") @@ -793,7 +727,7 @@ def test_asset_actions_visibility(self): other_user = self.setup_user(enable_sharing=True, enable_public_sharing=True) bookmark = self.setup_bookmark(shared=True, user=other_user) asset = self.setup_asset(bookmark) - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) asset_item = self.find_asset(soup, asset) view_link = asset_item.find("a", string="View") @@ -805,7 +739,7 @@ def test_asset_actions_visibility(self): # shared bookmark, guest user self.client.logout() - soup = self.get_details(bookmark) + soup = self.get_shared_details_modal(bookmark) asset_item = self.find_asset(soup, asset) view_link = asset_item.find("a", string="View") @@ -815,77 +749,13 @@ def test_asset_actions_visibility(self): self.assertIsNotNone(view_link) self.assertIsNone(delete_button) - def test_remove_asset(self): - # remove asset - bookmark = self.setup_bookmark() - asset = self.setup_asset(bookmark) - - response = self.client.post( - self.get_base_url(bookmark), {"remove_asset": asset.id} - ) - self.assertEqual(response.status_code, 302) - self.assertFalse(BookmarkAsset.objects.filter(id=asset.id).exists()) - - # non-existent asset - response = self.client.post(self.get_base_url(bookmark), {"remove_asset": 9999}) - self.assertEqual(response.status_code, 404) - - # post without asset ID does not remove - asset = self.setup_asset(bookmark) - response = self.client.post(self.get_base_url(bookmark)) - self.assertEqual(response.status_code, 302) - self.assertTrue(BookmarkAsset.objects.filter(id=asset.id).exists()) - - # guest user - asset = self.setup_asset(bookmark) - self.client.logout() - response = self.client.post( - self.get_base_url(bookmark), {"remove_asset": asset.id} - ) - self.assertEqual(response.status_code, 404) - self.assertTrue(BookmarkAsset.objects.filter(id=asset.id).exists()) - - @override_settings(LD_ENABLE_SNAPSHOTS=True) - def test_assets_refresh_when_having_pending_asset(self): - bookmark = self.setup_bookmark() - asset = self.setup_asset(bookmark, status=BookmarkAsset.STATUS_COMPLETE) - fetch_url = reverse("bookmarks:details_assets", args=[bookmark.id]) - - # no pending asset - soup = self.get_details(bookmark) - files_section = self.find_section(soup, "Files") - assets_wrapper = files_section.find("div", {"ld-fetch": fetch_url}) - self.assertIsNone(assets_wrapper) - - # with pending asset - asset.status = BookmarkAsset.STATUS_PENDING - asset.save() - - soup = self.get_details(bookmark) - files_section = self.find_section(soup, "Files") - assets_wrapper = files_section.find("div", {"ld-fetch": fetch_url}) - self.assertIsNotNone(assets_wrapper) - - @override_settings(LD_ENABLE_SNAPSHOTS=True) - def test_create_snapshot(self): - with patch.object( - tasks, "_create_html_snapshot_task" - ) as mock_create_html_snapshot_task: - bookmark = self.setup_bookmark() - response = self.client.post( - self.get_base_url(bookmark), {"create_snapshot": ""} - ) - self.assertEqual(response.status_code, 302) - - self.assertEqual(bookmark.bookmarkasset_set.count(), 1) - @override_settings(LD_ENABLE_SNAPSHOTS=True) def test_create_snapshot_is_disabled_when_having_pending_asset(self): bookmark = self.setup_bookmark() asset = self.setup_asset(bookmark, status=BookmarkAsset.STATUS_COMPLETE) # no pending asset - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) files_section = self.find_section(soup, "Files") create_button = files_section.find( "button", string=re.compile("Create HTML snapshot") @@ -896,40 +766,9 @@ def test_create_snapshot_is_disabled_when_having_pending_asset(self): asset.status = BookmarkAsset.STATUS_PENDING asset.save() - soup = self.get_details(bookmark) + soup = self.get_index_details_modal(bookmark) files_section = self.find_section(soup, "Files") create_button = files_section.find( "button", string=re.compile("Create HTML snapshot") ) self.assertTrue(create_button.has_attr("disabled")) - - def test_upload_file(self): - bookmark = self.setup_bookmark() - file_content = b"file content" - upload_file = SimpleUploadedFile("test.txt", file_content) - - with patch.object(bookmarks, "upload_asset") as mock_upload_asset: - response = self.client.post( - self.get_base_url(bookmark), - {"upload_asset": "", "upload_asset_file": upload_file}, - ) - self.assertEqual(response.status_code, 302) - - mock_upload_asset.assert_called_once() - - args, kwargs = mock_upload_asset.call_args - self.assertEqual(args[0], bookmark) - - upload_file = args[1] - self.assertEqual(upload_file.name, "test.txt") - - def test_upload_file_without_file(self): - bookmark = self.setup_bookmark() - - with patch.object(bookmarks, "upload_asset") as mock_upload_asset: - response = self.client.post( - self.get_base_url(bookmark), - {"upload_asset": ""}, - ) - self.assertEqual(response.status_code, 400) - mock_upload_asset.assert_not_called() diff --git a/bookmarks/tests/test_bookmark_details_view.py b/bookmarks/tests/test_bookmark_details_view.py deleted file mode 100644 index 36824de0..00000000 --- a/bookmarks/tests/test_bookmark_details_view.py +++ /dev/null @@ -1,6 +0,0 @@ -from bookmarks.tests.test_bookmark_details_modal import BookmarkDetailsModalTestCase - - -class BookmarkDetailsViewTestCase(BookmarkDetailsModalTestCase): - def get_view_name(self): - return "bookmarks:details" diff --git a/bookmarks/tests/test_bookmark_index_view.py b/bookmarks/tests/test_bookmark_index_view.py index 608f2817..8a0c680c 100644 --- a/bookmarks/tests/test_bookmark_index_view.py +++ b/bookmarks/tests/test_bookmark_index_view.py @@ -1,85 +1,24 @@ import urllib.parse -from typing import List from django.contrib.auth.models import User from django.test import TestCase from django.urls import reverse -from bookmarks.models import Bookmark, BookmarkSearch, Tag, UserProfile -from bookmarks.tests.helpers import BookmarkFactoryMixin, HtmlTestMixin +from bookmarks.models import BookmarkSearch, UserProfile +from bookmarks.tests.helpers import ( + BookmarkFactoryMixin, + BookmarkListTestMixin, + TagCloudTestMixin, +) -class BookmarkIndexViewTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin): - +class BookmarkIndexViewTestCase( + TestCase, BookmarkFactoryMixin, BookmarkListTestMixin, TagCloudTestMixin +): def setUp(self) -> None: user = self.get_or_create_test_user() self.client.force_login(user) - def assertVisibleBookmarks( - self, response, bookmarks: List[Bookmark], link_target: str = "_blank" - ): - soup = self.make_soup(response.content.decode()) - bookmark_list = soup.select_one( - f'ul.bookmark-list[data-bookmarks-total="{len(bookmarks)}"]' - ) - self.assertIsNotNone(bookmark_list) - - bookmark_items = bookmark_list.select("li[ld-bookmark-item]") - self.assertEqual(len(bookmark_items), len(bookmarks)) - - for bookmark in bookmarks: - bookmark_item = bookmark_list.select_one( - f'li[ld-bookmark-item] a[href="{bookmark.url}"][target="{link_target}"]' - ) - self.assertIsNotNone(bookmark_item) - - def assertInvisibleBookmarks( - self, response, bookmarks: List[Bookmark], link_target: str = "_blank" - ): - soup = self.make_soup(response.content.decode()) - - for bookmark in bookmarks: - bookmark_item = soup.select_one( - f'li[ld-bookmark-item] a[href="{bookmark.url}"][target="{link_target}"]' - ) - self.assertIsNone(bookmark_item) - - def assertVisibleTags(self, response, tags: List[Tag]): - soup = self.make_soup(response.content.decode()) - tag_cloud = soup.select_one("div.tag-cloud") - self.assertIsNotNone(tag_cloud) - - tag_items = tag_cloud.select("a[data-is-tag-item]") - self.assertEqual(len(tag_items), len(tags)) - - tag_item_names = [tag_item.text.strip() for tag_item in tag_items] - - for tag in tags: - self.assertTrue(tag.name in tag_item_names) - - def assertInvisibleTags(self, response, tags: List[Tag]): - soup = self.make_soup(response.content.decode()) - tag_items = soup.select("a[data-is-tag-item]") - - tag_item_names = [tag_item.text.strip() for tag_item in tag_items] - - for tag in tags: - self.assertFalse(tag.name in tag_item_names) - - def assertSelectedTags(self, response, tags: List[Tag]): - soup = self.make_soup(response.content.decode()) - selected_tags = soup.select_one("p.selected-tags") - self.assertIsNotNone(selected_tags) - - tag_list = selected_tags.select("a") - self.assertEqual(len(tag_list), len(tags)) - - for tag in tags: - self.assertTrue( - tag.name in selected_tags.text, - msg=f"Selected tags do not contain: {tag.name}", - ) - def assertEditLink(self, response, url): html = response.content.decode() self.assertInHTML( @@ -285,24 +224,21 @@ def test_bulk_edit_respects_search_options(self): base_url = reverse("bookmarks:index") # without params - return_url = urllib.parse.quote_plus(base_url) - url = f"{action_url}?return_url={return_url}" + url = f"{action_url}" response = self.client.get(base_url) self.assertBulkActionForm(response, url) # with query url_params = "?q=foo" - return_url = urllib.parse.quote_plus(base_url + url_params) - url = f"{action_url}?q=foo&return_url={return_url}" + url = f"{action_url}?q=foo" response = self.client.get(base_url + url_params) self.assertBulkActionForm(response, url) # with query and sort url_params = "?q=foo&sort=title_asc" - return_url = urllib.parse.quote_plus(base_url + url_params) - url = f"{action_url}?q=foo&sort=title_asc&return_url={return_url}" + url = f"{action_url}?q=foo&sort=title_asc" response = self.client.get(base_url + url_params) self.assertBulkActionForm(response, url) @@ -503,7 +439,7 @@ def test_url_encode_bookmark_actions_url(self): self.assertEqual( actions_form.attrs["action"], - "/bookmarks/action?q=%23foo&return_url=%2Fbookmarks%3Fq%3D%2523foo", + "/bookmarks/action?q=%23foo", ) def test_encode_search_params(self): @@ -533,3 +469,15 @@ def test_encode_search_params(self): url = reverse("bookmarks:index") + "?page=alert(%27xss%27)" response = self.client.get(url) self.assertNotContains(response, "alert('xss')") + + def test_turbo_frame_details_modal_renders_details_modal_update(self): + bookmark = self.setup_bookmark() + url = reverse("bookmarks:index") + f"?bookmark_id={bookmark.id}" + response = self.client.get(url, headers={"Turbo-Frame": "details-modal"}) + + self.assertEqual(200, response.status_code) + + soup = self.make_soup(response.content.decode()) + self.assertIsNotNone(soup.select_one("turbo-frame#details-modal")) + self.assertIsNone(soup.select_one("#bookmark-list-container")) + self.assertIsNone(soup.select_one("#tag-cloud-container")) diff --git a/bookmarks/tests/test_bookmark_search_tag.py b/bookmarks/tests/test_bookmark_search_tag.py index d40bf479..e8c016f6 100644 --- a/bookmarks/tests/test_bookmark_search_tag.py +++ b/bookmarks/tests/test_bookmark_search_tag.py @@ -1,16 +1,13 @@ from bs4 import BeautifulSoup -from django.db.models import QuerySet from django.template import Template, RequestContext from django.test import TestCase, RequestFactory -from bookmarks.models import BookmarkSearch, Tag +from bookmarks.models import BookmarkSearch from bookmarks.tests.helpers import BookmarkFactoryMixin, HtmlTestMixin class BookmarkSearchTagTest(TestCase, BookmarkFactoryMixin, HtmlTestMixin): - def render_template( - self, url: str, tags: QuerySet[Tag] = Tag.objects.all(), mode: str = "" - ): + def render_template(self, url: str, mode: str = ""): rf = RequestFactory() request = rf.get(url) request.user = self.get_or_create_test_user() @@ -21,32 +18,31 @@ def render_template( { "request": request, "search": search, - "tags": tags, "mode": mode, }, ) template_to_render = Template( - "{% load bookmarks %}" "{% bookmark_search search tags mode %}" + "{% load bookmarks %} {% bookmark_search search mode %}" ) return template_to_render.render(context) def assertHiddenInput(self, form: BeautifulSoup, name: str, value: str = None): - input = form.select_one(f'input[name="{name}"][type="hidden"]') - self.assertIsNotNone(input) + element = form.select_one(f'input[name="{name}"][type="hidden"]') + self.assertIsNotNone(element) if value is not None: - self.assertEqual(input["value"], value) + self.assertEqual(element["value"], value) def assertNoHiddenInput(self, form: BeautifulSoup, name: str): - input = form.select_one(f'input[name="{name}"][type="hidden"]') - self.assertIsNone(input) + element = form.select_one(f'input[name="{name}"][type="hidden"]') + self.assertIsNone(element) def assertSearchInput(self, form: BeautifulSoup, name: str, value: str = None): - input = form.select_one(f'input[name="{name}"][type="search"]') - self.assertIsNotNone(input) + element = form.select_one(f'input[name="{name}"][type="search"]') + self.assertIsNotNone(element) if value is not None: - self.assertEqual(input["value"], value) + self.assertEqual(element["value"], value) def assertSelect(self, form: BeautifulSoup, name: str, value: str = None): select = form.select_one(f'select[name="{name}"]') diff --git a/bookmarks/tests/test_bookmark_shared_view.py b/bookmarks/tests/test_bookmark_shared_view.py index a20fd2f2..c54886bd 100644 --- a/bookmarks/tests/test_bookmark_shared_view.py +++ b/bookmarks/tests/test_bookmark_shared_view.py @@ -6,11 +6,16 @@ from django.urls import reverse from bookmarks.models import Bookmark, BookmarkSearch, Tag, UserProfile -from bookmarks.tests.helpers import BookmarkFactoryMixin, HtmlTestMixin +from bookmarks.tests.helpers import ( + BookmarkFactoryMixin, + BookmarkListTestMixin, + TagCloudTestMixin, +) -class BookmarkSharedViewTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin): - +class BookmarkSharedViewTestCase( + TestCase, BookmarkFactoryMixin, BookmarkListTestMixin, TagCloudTestMixin +): def authenticate(self) -> None: user = self.get_or_create_test_user() self.client.force_login(user) @@ -24,57 +29,6 @@ def assertBookmarkCount( count=count, ) - def assertVisibleBookmarks( - self, response, bookmarks: List[Bookmark], link_target: str = "_blank" - ): - soup = self.make_soup(response.content.decode()) - bookmark_list = soup.select_one( - f'ul.bookmark-list[data-bookmarks-total="{len(bookmarks)}"]' - ) - self.assertIsNotNone(bookmark_list) - - bookmark_items = bookmark_list.select("li[ld-bookmark-item]") - self.assertEqual(len(bookmark_items), len(bookmarks)) - - for bookmark in bookmarks: - bookmark_item = bookmark_list.select_one( - f'li[ld-bookmark-item] a[href="{bookmark.url}"][target="{link_target}"]' - ) - self.assertIsNotNone(bookmark_item) - - def assertInvisibleBookmarks( - self, response, bookmarks: List[Bookmark], link_target: str = "_blank" - ): - soup = self.make_soup(response.content.decode()) - - for bookmark in bookmarks: - bookmark_item = soup.select_one( - f'li[ld-bookmark-item] a[href="{bookmark.url}"][target="{link_target}"]' - ) - self.assertIsNone(bookmark_item) - - def assertVisibleTags(self, response, tags: List[Tag]): - soup = self.make_soup(response.content.decode()) - tag_cloud = soup.select_one("div.tag-cloud") - self.assertIsNotNone(tag_cloud) - - tag_items = tag_cloud.select("a[data-is-tag-item]") - self.assertEqual(len(tag_items), len(tags)) - - tag_item_names = [tag_item.text.strip() for tag_item in tag_items] - - for tag in tags: - self.assertTrue(tag.name in tag_item_names) - - def assertInvisibleTags(self, response, tags: List[Tag]): - soup = self.make_soup(response.content.decode()) - tag_items = soup.select("a[data-is-tag-item]") - - tag_item_names = [tag_item.text.strip() for tag_item in tag_items] - - for tag in tags: - self.assertFalse(tag.name in tag_item_names) - def assertVisibleUserOptions(self, response, users: List[User]): html = response.content.decode() @@ -84,7 +38,7 @@ def assertVisibleUserOptions(self, response, users: List[User]): f'' ) user_select_html = f""" - {''.join(user_options)} """ @@ -593,7 +547,7 @@ def test_url_encode_bookmark_actions_url(self): self.assertEqual( actions_form.attrs["action"], - "/bookmarks/shared/action?q=%23foo&return_url=%2Fbookmarks%2Fshared%3Fq%3D%2523foo", + "/bookmarks/shared/action?q=%23foo", ) def test_encode_search_params(self): @@ -627,3 +581,15 @@ def test_encode_search_params(self): url = reverse("bookmarks:shared") + "?page=alert(%27xss%27)" response = self.client.get(url) self.assertNotContains(response, "alert('xss')") + + def test_turbo_frame_details_modal_renders_details_modal_update(self): + bookmark = self.setup_bookmark() + url = reverse("bookmarks:shared") + f"?bookmark_id={bookmark.id}" + response = self.client.get(url, headers={"Turbo-Frame": "details-modal"}) + + self.assertEqual(200, response.status_code) + + soup = self.make_soup(response.content.decode()) + self.assertIsNotNone(soup.select_one("turbo-frame#details-modal")) + self.assertIsNone(soup.select_one("#bookmark-list-container")) + self.assertIsNone(soup.select_one("#tag-cloud-container")) diff --git a/bookmarks/tests/test_bookmarks_list_template.py b/bookmarks/tests/test_bookmarks_list_template.py index c86313e2..8a6f5d0c 100644 --- a/bookmarks/tests/test_bookmarks_list_template.py +++ b/bookmarks/tests/test_bookmarks_list_template.py @@ -12,7 +12,7 @@ from bookmarks.middlewares import LinkdingMiddleware from bookmarks.models import Bookmark, UserProfile, User from bookmarks.tests.helpers import BookmarkFactoryMixin, HtmlTestMixin -from bookmarks.views.partials import contexts +from bookmarks.views import contexts class BookmarkListTemplateTest(TestCase, BookmarkFactoryMixin, HtmlTestMixin): @@ -51,31 +51,25 @@ def assertWebArchiveLink( html, ) - def assertViewLink( - self, html: str, bookmark: Bookmark, return_url=reverse("bookmarks:index") - ): - self.assertViewLinkCount(html, bookmark, return_url=return_url) + def assertViewLink(self, html: str, bookmark: Bookmark, base_url=None): + self.assertViewLinkCount(html, bookmark, base_url) - def assertNoViewLink( - self, html: str, bookmark: Bookmark, return_url=reverse("bookmarks:index") - ): - self.assertViewLinkCount(html, bookmark, count=0, return_url=return_url) + def assertNoViewLink(self, html: str, bookmark: Bookmark, base_url=None): + self.assertViewLinkCount(html, bookmark, base_url, count=0) def assertViewLinkCount( self, html: str, bookmark: Bookmark, + base_url: str = None, count=1, - return_url=reverse("bookmarks:index"), ): - details_url = reverse("bookmarks:details", args=[bookmark.id]) - details_modal_url = reverse("bookmarks:details_modal", args=[bookmark.id]) + if base_url is None: + base_url = reverse("bookmarks:index") + details_url = base_url + f"?details={bookmark.id}" self.assertInHTML( f""" - View + View """, html, count=count, @@ -652,7 +646,7 @@ def test_show_share_info_for_non_owned_bookmarks(self): bookmark = self.setup_bookmark(user=other_user, shared=True) html = self.render_template(context_type=contexts.SharedBookmarkListContext) - self.assertViewLink(html, bookmark, return_url=reverse("bookmarks:shared")) + self.assertViewLink(html, bookmark, base_url=reverse("bookmarks:shared")) self.assertNoBookmarkActions(html, bookmark) self.assertShareInfo(html, bookmark) @@ -944,7 +938,7 @@ def test_with_anonymous_user(self): self.assertWebArchiveLink( html, "1 week ago", bookmark.web_archive_snapshot_url, link_target="_blank" ) - self.assertViewLink(html, bookmark, return_url=reverse("bookmarks:shared")) + self.assertViewLink(html, bookmark, base_url=reverse("bookmarks:shared")) self.assertNoBookmarkActions(html, bookmark) self.assertShareInfo(html, bookmark) self.assertMarkAsReadButton(html, bookmark, count=0) diff --git a/bookmarks/tests/test_pagination_tag.py b/bookmarks/tests/test_pagination_tag.py index 1d5ee408..19ec728b 100644 --- a/bookmarks/tests/test_pagination_tag.py +++ b/bookmarks/tests/test_pagination_tag.py @@ -172,3 +172,12 @@ def test_respects_search_parameters(self): rendered_template, 2, True, href="?q=cake&sort=title_asc&page=2" ) self.assertNextLink(rendered_template, 3, href="?q=cake&sort=title_asc&page=3") + + def test_removes_details_parameter(self): + rendered_template = self.render_template( + 100, 10, 2, url="/test?details=1&page=2" + ) + self.assertPrevLink(rendered_template, 1, href="?page=1") + self.assertPageLink(rendered_template, 1, False, href="?page=1") + self.assertPageLink(rendered_template, 2, True, href="?page=2") + self.assertNextLink(rendered_template, 3, href="?page=3") diff --git a/bookmarks/tests/test_tag_cloud_template.py b/bookmarks/tests/test_tag_cloud_template.py index d0e0f0d3..04cad07b 100644 --- a/bookmarks/tests/test_tag_cloud_template.py +++ b/bookmarks/tests/test_tag_cloud_template.py @@ -8,7 +8,7 @@ from bookmarks.middlewares import LinkdingMiddleware from bookmarks.models import UserProfile from bookmarks.tests.helpers import BookmarkFactoryMixin, HtmlTestMixin -from bookmarks.views.partials import contexts +from bookmarks.views import contexts class TagCloudTemplateTest(TestCase, BookmarkFactoryMixin, HtmlTestMixin): @@ -203,13 +203,28 @@ def test_tag_url_respects_search_options(self): tag = self.setup_tag(name="tag1") self.setup_bookmark(tags=[tag], title="term1") + rendered_template = self.render_template(url="/test?q=term1&sort=title_asc") + + self.assertInHTML( + """ + + tag1 + + """, + rendered_template, + ) + + def test_tag_url_removes_page_number_and_details_id(self): + tag = self.setup_tag(name="tag1") + self.setup_bookmark(tags=[tag], title="term1") + rendered_template = self.render_template( - url="/test?q=term1&sort=title_asc&page=2" + url="/test?q=term1&sort=title_asc&page=2&details=5" ) self.assertInHTML( """ - + tag1 """, @@ -347,12 +362,30 @@ def test_selected_tag_url_respects_search_options(self): self.setup_bookmark(tags=[tag], title="term1", description="term2") rendered_template = self.render_template( - url="/test?q=term1 %23tag1 term2&sort=title_asc&page=2" + url="/test?q=term1 %23tag1 term2&sort=title_asc" + ) + + self.assertInHTML( + """ + + -tag1 + + """, + rendered_template, + ) + + def test_selected_tag_url_removes_page_number_and_details_id(self): + tag = self.setup_tag(name="tag1") + self.setup_bookmark(tags=[tag], title="term1", description="term2") + + rendered_template = self.render_template( + url="/test?q=term1 %23tag1 term2&sort=title_asc&page=2&details=5" ) self.assertInHTML( """ - -tag1 diff --git a/bookmarks/urls.py b/bookmarks/urls.py index 74d082f0..97b8ab1f 100644 --- a/bookmarks/urls.py +++ b/bookmarks/urls.py @@ -9,7 +9,6 @@ SharedBookmarksFeed, PublicSharedBookmarksFeed, ) -from bookmarks.views import partials app_name = "bookmarks" urlpatterns = [ @@ -31,21 +30,6 @@ path("bookmarks/new", views.bookmarks.new, name="new"), path("bookmarks/close", views.bookmarks.close, name="close"), path("bookmarks//edit", views.bookmarks.edit, name="edit"), - path( - "bookmarks//details", - views.bookmarks.details, - name="details", - ), - path( - "bookmarks//details_modal", - views.bookmarks.details_modal, - name="details_modal", - ), - path( - "bookmarks//details_assets", - views.bookmarks.details_assets, - name="details_assets", - ), # Assets path( "assets/", @@ -57,52 +41,6 @@ views.assets.read, name="assets.read", ), - # Partials - path( - "bookmarks/partials/bookmark-list/active", - partials.active_bookmark_list, - name="partials.bookmark_list.active", - ), - path( - "bookmarks/partials/tag-cloud/active", - partials.active_tag_cloud, - name="partials.tag_cloud.active", - ), - path( - "bookmarks/partials/tag-modal/active", - partials.active_tag_modal, - name="partials.tag_modal.active", - ), - path( - "bookmarks/partials/bookmark-list/archived", - partials.archived_bookmark_list, - name="partials.bookmark_list.archived", - ), - path( - "bookmarks/partials/tag-cloud/archived", - partials.archived_tag_cloud, - name="partials.tag_cloud.archived", - ), - path( - "bookmarks/partials/tag-modal/archived", - partials.archived_tag_modal, - name="partials.tag_modal.archived", - ), - path( - "bookmarks/partials/bookmark-list/shared", - partials.shared_bookmark_list, - name="partials.bookmark_list.shared", - ), - path( - "bookmarks/partials/tag-cloud/shared", - partials.shared_tag_cloud, - name="partials.tag_cloud.shared", - ), - path( - "bookmarks/partials/tag-modal/shared", - partials.shared_tag_modal, - name="partials.tag_modal.shared", - ), # Settings path("settings", views.settings.general, name="settings.index"), path("settings/general", views.settings.general, name="settings.general"), diff --git a/bookmarks/utils.py b/bookmarks/utils.py index 04bb697b..b1a38ec2 100644 --- a/bookmarks/utils.py +++ b/bookmarks/utils.py @@ -1,10 +1,12 @@ import logging import re import unicodedata +import urllib.parse from datetime import datetime from typing import Optional from dateutil.relativedelta import relativedelta +from django.http import HttpResponseRedirect from django.template.defaultfilters import pluralize from django.utils import timezone, formats @@ -114,6 +116,14 @@ def get_safe_return_url(return_url: str, fallback_url: str): return return_url +def redirect_with_query(request, redirect_url): + query_string = urllib.parse.urlencode(request.GET) + if query_string: + redirect_url += "?" + query_string + + return HttpResponseRedirect(redirect_url) + + def generate_username(email): # taken from mozilla-django-oidc docs :) diff --git a/bookmarks/views/bookmarks.py b/bookmarks/views/bookmarks.py index 0e882813..730741bd 100644 --- a/bookmarks/views/bookmarks.py +++ b/bookmarks/views/bookmarks.py @@ -11,7 +11,7 @@ from django.shortcuts import render from django.urls import reverse -from bookmarks import queries +from bookmarks import queries, utils from bookmarks.models import ( Bookmark, BookmarkAsset, @@ -19,6 +19,7 @@ BookmarkSearch, build_tag_string, ) +from bookmarks.services import bookmarks as bookmark_actions, tasks from bookmarks.services.bookmarks import ( create_bookmark, update_bookmark, @@ -34,9 +35,8 @@ share_bookmarks, unshare_bookmarks, ) -from bookmarks.services import bookmarks as bookmark_actions, tasks from bookmarks.utils import get_safe_return_url -from bookmarks.views.partials import contexts +from bookmarks.views import contexts, partials, turbo _default_page_size = 30 @@ -48,12 +48,17 @@ def index(request): bookmark_list = contexts.ActiveBookmarkListContext(request) tag_cloud = contexts.ActiveTagCloudContext(request) - return render( + bookmark_details = contexts.get_details_context( + request, contexts.ActiveBookmarkDetailsContext + ) + + return render_bookmarks_view( request, "bookmarks/index.html", { "bookmark_list": bookmark_list, "tag_cloud": tag_cloud, + "details": bookmark_details, }, ) @@ -65,12 +70,17 @@ def archived(request): bookmark_list = contexts.ArchivedBookmarkListContext(request) tag_cloud = contexts.ArchivedTagCloudContext(request) - return render( + bookmark_details = contexts.get_details_context( + request, contexts.ArchivedBookmarkDetailsContext + ) + + return render_bookmarks_view( request, "bookmarks/archive.html", { "bookmark_list": bookmark_list, "tag_cloud": tag_cloud, + "details": bookmark_details, }, ) @@ -81,14 +91,37 @@ def shared(request): bookmark_list = contexts.SharedBookmarkListContext(request) tag_cloud = contexts.SharedTagCloudContext(request) + bookmark_details = contexts.get_details_context( + request, contexts.SharedBookmarkDetailsContext + ) public_only = not request.user.is_authenticated users = queries.query_shared_bookmark_users( request.user_profile, bookmark_list.search, public_only ) - return render( + return render_bookmarks_view( request, "bookmarks/shared.html", - {"bookmark_list": bookmark_list, "tag_cloud": tag_cloud, "users": users}, + { + "bookmark_list": bookmark_list, + "tag_cloud": tag_cloud, + "details": bookmark_details, + "users": users, + }, + ) + + +def render_bookmarks_view(request, template_name, context): + if turbo.is_frame(request, "details-modal"): + return render( + request, + "bookmarks/updates/details-modal-frame.html", + context, + ) + + return render( + request, + template_name, + context, ) @@ -111,76 +144,6 @@ def search_action(request): return HttpResponseRedirect(url) -def _details(request, bookmark_id: int, template: str): - try: - bookmark = Bookmark.objects.get(pk=bookmark_id) - except Bookmark.DoesNotExist: - raise Http404("Bookmark does not exist") - - is_owner = bookmark.owner == request.user - is_shared = ( - request.user.is_authenticated - and bookmark.shared - and bookmark.owner.profile.enable_sharing - ) - is_public_shared = bookmark.shared and bookmark.owner.profile.enable_public_sharing - if not is_owner and not is_shared and not is_public_shared: - raise Http404("Bookmark does not exist") - - if request.method == "POST": - if not is_owner: - raise Http404("Bookmark does not exist") - - return_url = get_safe_return_url( - request.GET.get("return_url"), - reverse("bookmarks:details", args=[bookmark.id]), - ) - - if "remove_asset" in request.POST: - asset_id = request.POST["remove_asset"] - try: - asset = bookmark.bookmarkasset_set.get(pk=asset_id) - except BookmarkAsset.DoesNotExist: - raise Http404("Asset does not exist") - asset.delete() - if "create_snapshot" in request.POST: - tasks.create_html_snapshot(bookmark) - if "upload_asset" in request.POST: - file = request.FILES.get("upload_asset_file") - if not file: - return HttpResponseBadRequest("No file uploaded") - bookmark_actions.upload_asset(bookmark, file) - else: - bookmark.is_archived = request.POST.get("is_archived") == "on" - bookmark.unread = request.POST.get("unread") == "on" - bookmark.shared = request.POST.get("shared") == "on" - bookmark.save() - - return HttpResponseRedirect(return_url) - - details_context = contexts.BookmarkDetailsContext(request, bookmark) - - return render( - request, - template, - { - "details": details_context, - }, - ) - - -def details(request, bookmark_id: int): - return _details(request, bookmark_id, "bookmarks/details.html") - - -def details_modal(request, bookmark_id: int): - return _details(request, bookmark_id, "bookmarks/details_modal.html") - - -def details_assets(request, bookmark_id: int): - return _details(request, bookmark_id, "bookmarks/details/assets.html") - - def convert_tag_string(tag_string: str): # Tag strings coming from inputs are space-separated, however services.bookmarks functions expect comma-separated # strings @@ -307,26 +270,87 @@ def mark_as_read(request, bookmark_id: int): bookmark.save() +def create_html_snapshot(request, bookmark_id: int): + try: + bookmark = Bookmark.objects.get(pk=bookmark_id, owner=request.user) + except Bookmark.DoesNotExist: + raise Http404("Bookmark does not exist") + + tasks.create_html_snapshot(bookmark) + + +def upload_asset(request, bookmark_id: int): + try: + bookmark = Bookmark.objects.get(pk=bookmark_id, owner=request.user) + except Bookmark.DoesNotExist: + raise Http404("Bookmark does not exist") + + file = request.FILES.get("upload_asset_file") + if not file: + raise ValueError("No file uploaded") + + bookmark_actions.upload_asset(bookmark, file) + + +def remove_asset(request, asset_id: int): + try: + asset = BookmarkAsset.objects.get(pk=asset_id, bookmark__owner=request.user) + except BookmarkAsset.DoesNotExist: + raise Http404("Asset does not exist") + + asset.delete() + + +def update_state(request, bookmark_id: int): + try: + bookmark = Bookmark.objects.get(pk=bookmark_id, owner=request.user) + except Bookmark.DoesNotExist: + raise Http404("Bookmark does not exist") + + bookmark.is_archived = request.POST.get("is_archived") == "on" + bookmark.unread = request.POST.get("unread") == "on" + bookmark.shared = request.POST.get("shared") == "on" + bookmark.save() + + @login_required def index_action(request): search = BookmarkSearch.from_request(request.GET) query = queries.query_bookmarks(request.user, request.user_profile, search) - return action(request, query) + handle_action(request, query) + + if turbo.accept(request): + return partials.active_bookmark_update(request) + + return utils.redirect_with_query(request, reverse("bookmarks:index")) @login_required def archived_action(request): search = BookmarkSearch.from_request(request.GET) query = queries.query_archived_bookmarks(request.user, request.user_profile, search) - return action(request, query) + handle_action(request, query) + + if turbo.accept(request): + return partials.archived_bookmark_update(request) + + return utils.redirect_with_query(request, reverse("bookmarks:archived")) @login_required def shared_action(request): - return action(request) + if "bulk_execute" in request.POST: + return HttpResponseBadRequest("View does not support bulk actions") + + handle_action(request) + + if turbo.accept(request): + return partials.shared_bookmark_update(request) + + return utils.redirect_with_query(request, reverse("bookmarks:shared")) -def action(request, query: QuerySet[Bookmark] = None): +def handle_action(request, query: QuerySet[Bookmark] = None): # Single bookmark actions if "archive" in request.POST: archive(request, request.POST["archive"]) @@ -338,11 +362,21 @@ def action(request, query: QuerySet[Bookmark] = None): mark_as_read(request, request.POST["mark_as_read"]) if "unshare" in request.POST: unshare(request, request.POST["unshare"]) + if "create_html_snapshot" in request.POST: + create_html_snapshot(request, request.POST["create_html_snapshot"]) + if "upload_asset" in request.POST: + upload_asset(request, request.POST["upload_asset"]) + if "remove_asset" in request.POST: + remove_asset(request, request.POST["remove_asset"]) + + # State updates + if "update_state" in request.POST: + update_state(request, request.POST["update_state"]) # Bulk actions if "bulk_execute" in request.POST: if query is None: - return HttpResponseBadRequest("View does not support bulk actions") + raise ValueError("Query must be provided for bulk actions") bulk_action = request.POST["bulk_action"] @@ -375,11 +409,6 @@ def action(request, query: QuerySet[Bookmark] = None): if "bulk_unshare" == bulk_action: unshare_bookmarks(bookmark_ids, request.user) - return_url = get_safe_return_url( - request.GET.get("return_url"), reverse("bookmarks:index") - ) - return HttpResponseRedirect(return_url) - @login_required def close(request): diff --git a/bookmarks/views/partials/contexts.py b/bookmarks/views/contexts.py similarity index 84% rename from bookmarks/views/partials/contexts.py rename to bookmarks/views/contexts.py index 701f597b..85934510 100644 --- a/bookmarks/views/partials/contexts.py +++ b/bookmarks/views/contexts.py @@ -6,6 +6,7 @@ from django.core.handlers.wsgi import WSGIRequest from django.core.paginator import Paginator from django.db import models +from django.http import Http404 from django.urls import reverse from bookmarks import queries @@ -27,17 +28,11 @@ class RequestContext: index_view = "bookmarks:index" action_view = "bookmarks:index.action" - bookmark_list_partial_view = "bookmarks:partials.bookmark_list.active" - tag_cloud_partial_view = "bookmarks:partials.tag_cloud.active" - tag_modal_partial_view = "bookmarks:partials.tag_modal.active" def __init__(self, request: WSGIRequest): self.request = request self.index_url = reverse(self.index_view) self.action_url = reverse(self.action_view) - self.bookmark_list_partial_url = reverse(self.bookmark_list_partial_view) - self.tag_cloud_partial_url = reverse(self.tag_cloud_partial_view) - self.tag_modal_partial_url = reverse(self.tag_modal_partial_view) self.query_params = request.GET.copy() self.query_params.pop("details", None) @@ -51,34 +46,25 @@ def get_url(self, view_url: str, add: dict = None, remove: dict = None) -> str: encoded_params = query_params.urlencode() return view_url + "?" + encoded_params if encoded_params else view_url - def index(self) -> str: - return self.get_url(self.index_url) + def index(self, add: dict = None, remove: dict = None) -> str: + return self.get_url(self.index_url, add=add, remove=remove) - def action(self, return_url: str) -> str: - return self.get_url(self.action_url, add={"return_url": return_url}) + def action(self, add: dict = None, remove: dict = None) -> str: + return self.get_url(self.action_url, add=add, remove=remove) - def bookmark_list_partial(self) -> str: - return self.get_url(self.bookmark_list_partial_url) - - def tag_cloud_partial(self) -> str: - return self.get_url(self.tag_cloud_partial_url) - - def tag_modal_partial(self) -> str: - return self.get_url(self.tag_modal_partial_url) + def details(self, bookmark_id: int) -> str: + return self.get_url(self.index_url, add={"details": bookmark_id}) def get_bookmark_query_set(self, search: BookmarkSearch): - raise Exception("Must be implemented by subclass") + raise NotImplementedError("Must be implemented by subclass") def get_tag_query_set(self, search: BookmarkSearch): - raise Exception("Must be implemented by subclass") + raise NotImplementedError("Must be implemented by subclass") class ActiveBookmarksContext(RequestContext): index_view = "bookmarks:index" action_view = "bookmarks:index.action" - bookmark_list_partial_view = "bookmarks:partials.bookmark_list.active" - tag_cloud_partial_view = "bookmarks:partials.tag_cloud.active" - tag_modal_partial_view = "bookmarks:partials.tag_modal.active" def get_bookmark_query_set(self, search: BookmarkSearch): return queries.query_bookmarks( @@ -94,9 +80,6 @@ def get_tag_query_set(self, search: BookmarkSearch): class ArchivedBookmarksContext(RequestContext): index_view = "bookmarks:archived" action_view = "bookmarks:archived.action" - bookmark_list_partial_view = "bookmarks:partials.bookmark_list.archived" - tag_cloud_partial_view = "bookmarks:partials.tag_cloud.archived" - tag_modal_partial_view = "bookmarks:partials.tag_modal.archived" def get_bookmark_query_set(self, search: BookmarkSearch): return queries.query_archived_bookmarks( @@ -112,9 +95,6 @@ def get_tag_query_set(self, search: BookmarkSearch): class SharedBookmarksContext(RequestContext): index_view = "bookmarks:shared" action_view = "bookmarks:shared.action" - bookmark_list_partial_view = "bookmarks:partials.bookmark_list.shared" - tag_cloud_partial_view = "bookmarks:partials.tag_cloud.shared" - tag_modal_partial_view = "bookmarks:partials.tag_modal.shared" def get_bookmark_query_set(self, search: BookmarkSearch): user = User.objects.filter(username=search.user).first() @@ -132,7 +112,13 @@ def get_tag_query_set(self, search: BookmarkSearch): class BookmarkItem: - def __init__(self, bookmark: Bookmark, user: User, profile: UserProfile) -> None: + def __init__( + self, + context: RequestContext, + bookmark: Bookmark, + user: User, + profile: UserProfile, + ) -> None: self.bookmark = bookmark is_editable = bookmark.owner == user @@ -154,6 +140,7 @@ def __init__(self, bookmark: Bookmark, user: User, profile: UserProfile) -> None self.is_archived = bookmark.is_archived self.unread = bookmark.unread self.owner = bookmark.owner + self.details_url = context.details(bookmark.id) css_classes = [] if bookmark.unread: @@ -200,16 +187,15 @@ def __init__(self, request: WSGIRequest) -> None: models.prefetch_related_objects(bookmarks_page.object_list, "owner", "tags") self.items = [ - BookmarkItem(bookmark, user, user_profile) for bookmark in bookmarks_page + BookmarkItem(request_context, bookmark, user, user_profile) + for bookmark in bookmarks_page ] self.is_empty = paginator.count == 0 self.bookmarks_page = bookmarks_page self.bookmarks_total = paginator.count self.return_url = request_context.index() - self.action_url = request_context.action(return_url=self.return_url) - self.refresh_url = request_context.bookmark_list_partial() - self.tag_modal_url = request_context.tag_modal_partial() + self.action_url = request_context.action() self.link_target = user_profile.bookmark_link_target self.date_display = user_profile.bookmark_date_display @@ -344,8 +330,6 @@ def __init__(self, request: WSGIRequest) -> None: self.selected_tags = unique_selected_tags self.has_selected_tags = has_selected_tags - self.refresh_url = request_context.tag_cloud_partial() - def get_selected_tags(self, tags: List[Tag]): parsed_query = queries.parse_query_string(self.search.q) tag_names = parsed_query["tag_names"] @@ -396,17 +380,18 @@ def __init__(self, asset: BookmarkAsset): class BookmarkDetailsContext: + request_context = RequestContext + def __init__(self, request: WSGIRequest, bookmark: Bookmark): + request_context = self.request_context(request) + user = request.user user_profile = request.user_profile - self.edit_return_url = utils.get_safe_return_url( - request.GET.get("return_url"), - reverse("bookmarks:details", args=[bookmark.id]), - ) - self.delete_return_url = utils.get_safe_return_url( - request.GET.get("return_url"), reverse("bookmarks:index") - ) + self.edit_return_url = request_context.details(bookmark.id) + self.action_url = request_context.action(add={"details": bookmark.id}) + self.delete_url = request_context.action() + self.close_url = request_context.index() self.bookmark = bookmark self.profile = request.user_profile @@ -438,3 +423,44 @@ def __init__(self, request: WSGIRequest, bookmark: Bookmark): ), None, ) + + +class ActiveBookmarkDetailsContext(BookmarkDetailsContext): + request_context = ActiveBookmarksContext + + +class ArchivedBookmarkDetailsContext(BookmarkDetailsContext): + request_context = ArchivedBookmarksContext + + +class SharedBookmarkDetailsContext(BookmarkDetailsContext): + request_context = SharedBookmarksContext + + +def get_details_context( + request: WSGIRequest, context_type +) -> BookmarkDetailsContext | None: + bookmark_id = request.GET.get("details") + if not bookmark_id: + return None + + try: + bookmark = Bookmark.objects.get(pk=int(bookmark_id)) + except Bookmark.DoesNotExist: + # just ignore, might end up in a situation where the bookmark was deleted + # in between navigating back and forth + return None + + is_owner = bookmark.owner == request.user + is_shared = ( + request.user.is_authenticated + and bookmark.shared + and bookmark.owner.profile.enable_sharing + ) + is_public_shared = bookmark.shared and bookmark.owner.profile.enable_public_sharing + if not is_owner and not is_shared and not is_public_shared: + raise Http404("Bookmark does not exist") + if request.method == "POST" and not is_owner: + raise Http404("Bookmark does not exist") + + return context_type(request, bookmark) diff --git a/bookmarks/views/partials.py b/bookmarks/views/partials.py new file mode 100644 index 00000000..8930a66c --- /dev/null +++ b/bookmarks/views/partials.py @@ -0,0 +1,40 @@ +from bookmarks.views import contexts, turbo + + +def render_bookmark_update(request, bookmark_list, tag_cloud, details): + return turbo.stream( + request, + "bookmarks/updates/bookmark_view_stream.html", + { + "bookmark_list": bookmark_list, + "tag_cloud": tag_cloud, + "details": details, + }, + ) + + +def active_bookmark_update(request): + bookmark_list = contexts.ActiveBookmarkListContext(request) + tag_cloud = contexts.ActiveTagCloudContext(request) + details = contexts.get_details_context( + request, contexts.ActiveBookmarkDetailsContext + ) + return render_bookmark_update(request, bookmark_list, tag_cloud, details) + + +def archived_bookmark_update(request): + bookmark_list = contexts.ArchivedBookmarkListContext(request) + tag_cloud = contexts.ArchivedTagCloudContext(request) + details = contexts.get_details_context( + request, contexts.ArchivedBookmarkDetailsContext + ) + return render_bookmark_update(request, bookmark_list, tag_cloud, details) + + +def shared_bookmark_update(request): + bookmark_list = contexts.SharedBookmarkListContext(request) + tag_cloud = contexts.SharedTagCloudContext(request) + details = contexts.get_details_context( + request, contexts.SharedBookmarkDetailsContext + ) + return render_bookmark_update(request, bookmark_list, tag_cloud, details) diff --git a/bookmarks/views/partials/__init__.py b/bookmarks/views/partials/__init__.py deleted file mode 100644 index 22041492..00000000 --- a/bookmarks/views/partials/__init__.py +++ /dev/null @@ -1,76 +0,0 @@ -from django.contrib.auth.decorators import login_required -from django.shortcuts import render - -from bookmarks.views.partials import contexts - - -@login_required -def active_bookmark_list(request): - bookmark_list_context = contexts.ActiveBookmarkListContext(request) - - return render( - request, - "bookmarks/bookmark_list.html", - {"bookmark_list": bookmark_list_context}, - ) - - -@login_required -def active_tag_cloud(request): - tag_cloud_context = contexts.ActiveTagCloudContext(request) - - return render(request, "bookmarks/tag_cloud.html", {"tag_cloud": tag_cloud_context}) - - -@login_required -def active_tag_modal(request): - tag_cloud_context = contexts.ActiveTagCloudContext(request) - - return render(request, "bookmarks/tag_modal.html", {"tag_cloud": tag_cloud_context}) - - -@login_required -def archived_bookmark_list(request): - bookmark_list_context = contexts.ArchivedBookmarkListContext(request) - - return render( - request, - "bookmarks/bookmark_list.html", - {"bookmark_list": bookmark_list_context}, - ) - - -@login_required -def archived_tag_cloud(request): - tag_cloud_context = contexts.ArchivedTagCloudContext(request) - - return render(request, "bookmarks/tag_cloud.html", {"tag_cloud": tag_cloud_context}) - - -@login_required -def archived_tag_modal(request): - tag_cloud_context = contexts.ArchivedTagCloudContext(request) - - return render(request, "bookmarks/tag_modal.html", {"tag_cloud": tag_cloud_context}) - - -def shared_bookmark_list(request): - bookmark_list_context = contexts.SharedBookmarkListContext(request) - - return render( - request, - "bookmarks/bookmark_list.html", - {"bookmark_list": bookmark_list_context}, - ) - - -def shared_tag_cloud(request): - tag_cloud_context = contexts.SharedTagCloudContext(request) - - return render(request, "bookmarks/tag_cloud.html", {"tag_cloud": tag_cloud_context}) - - -def shared_tag_modal(request): - tag_cloud_context = contexts.SharedTagCloudContext(request) - - return render(request, "bookmarks/tag_modal.html", {"tag_cloud": tag_cloud_context}) diff --git a/bookmarks/views/turbo.py b/bookmarks/views/turbo.py new file mode 100644 index 00000000..3ac7dbcf --- /dev/null +++ b/bookmarks/views/turbo.py @@ -0,0 +1,19 @@ +from django.http import HttpRequest, HttpResponse +from django.shortcuts import render as django_render + + +def accept(request: HttpRequest): + is_turbo_request = "text/vnd.turbo-stream.html" in request.headers.get("Accept", "") + disable_turbo = request.POST.get("disable_turbo", "false") == "true" + + return is_turbo_request and not disable_turbo + + +def is_frame(request: HttpRequest, frame: str) -> bool: + return request.headers.get("Turbo-Frame") == frame + + +def stream(request: HttpRequest, template_name: str, context: dict) -> HttpResponse: + response = django_render(request, template_name, context) + response["Content-Type"] = "text/vnd.turbo-stream.html" + return response diff --git a/siteroot/settings/dev.py b/siteroot/settings/dev.py index 1c3341f3..e40315b3 100644 --- a/siteroot/settings/dev.py +++ b/siteroot/settings/dev.py @@ -10,8 +10,8 @@ DEBUG = True # Enable debug toolbar -INSTALLED_APPS.append("debug_toolbar") -MIDDLEWARE.append("debug_toolbar.middleware.DebugToolbarMiddleware") +# INSTALLED_APPS.append("debug_toolbar") +# MIDDLEWARE.append("debug_toolbar.middleware.DebugToolbarMiddleware") INTERNAL_IPS = [ "127.0.0.1", From c22e30cbdad995a4050b0b3646a75589a15d4263 Mon Sep 17 00:00:00 2001 From: itz-Jana Date: Mon, 16 Sep 2024 13:18:18 +0200 Subject: [PATCH 10/12] Implement IPv6 capability (#826) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Implement IPv6 capability Enables uWSGI to listen for IPv6 requests also. This is done by defaulting to [::] as the listen address, which creates a dual stack socket, which can respond to IPv4 and IPv6 requests simultaneously. Furthermore a config option is adden to overwrite this default, if a user so desires. * Add LD_SERVER_HOST to .env.sample Additionally fix the default name of the LD_SERVER_PORT variable, which was falsely LD_HOST_PORT here. * revert .env.sample --------- Co-authored-by: Sascha Ißbrücker --- bootstrap.sh | 3 ++- docs/Options.md | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/bootstrap.sh b/bootstrap.sh index a3d728fb..24e00633 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash # Bootstrap script that gets executed in new Docker containers +LD_SERVER_HOST="${LD_SERVER_HOST:-[::]}" LD_SERVER_PORT="${LD_SERVER_PORT:-9090}" # Create data folder if it does not exist @@ -32,4 +33,4 @@ if [ "$LD_DISABLE_BACKGROUND_TASKS" != "True" ]; then fi # Start uwsgi server -exec uwsgi --http :$LD_SERVER_PORT uwsgi.ini +exec uwsgi --http $LD_SERVER_HOST:$LD_SERVER_PORT uwsgi.ini diff --git a/docs/Options.md b/docs/Options.md index 688e42fb..817081a6 100644 --- a/docs/Options.md +++ b/docs/Options.md @@ -62,6 +62,12 @@ Values: `Integer` as seconds | Default = `60` Configures the request timeout in the uwsgi application server. This can be useful if you want to import a bookmark file with a high number of bookmarks and run into request timeouts. +### `LD_SERVER_HOST` + +Values: Valid address for socket to bind to | Default = `[::]` + +Allows to set a custom host for the UWSGI server running in the container. The default creates a dual stack socket, which will respond to IPv4 and IPv6 requests. IPv4 requests are logged as IPv4-mapped IPv6 addresses, such as "::ffff:127.0.0.1". If reverting to an IPv4-only socket is desired, this can be set to "0.0.0.0". + ### `LD_SERVER_PORT` Values: Valid port number | Default = `9090` From 2b3cd2dec15e56d20165c49951db64339e41f36a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20I=C3=9Fbr=C3=BCcker?= Date: Mon, 16 Sep 2024 13:21:39 +0200 Subject: [PATCH 11/12] Bump version --- package.json | 2 +- version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e6c91bc1..3d3bc858 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "linkding", - "version": "1.33.0", + "version": "1.34.0", "description": "", "main": "index.js", "scripts": { diff --git a/version.txt b/version.txt index 7aa332e4..2b17ffd5 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.33.0 +1.34.0 From 53e4aeb1c15e006fc0badfa385114d3e09019fc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20I=C3=9Fbr=C3=BCcker?= Date: Mon, 16 Sep 2024 13:37:20 +0200 Subject: [PATCH 12/12] Update CHANGELOG.md --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9eeed35b..b5ce55c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## v1.34.0 (16/09/2024) + +### What's Changed +* Fix several issues around browser back navigation by @sissbruecker in https://github.com/sissbruecker/linkding/pull/825 +* Speed up response times for certain actions by @sissbruecker in https://github.com/sissbruecker/linkding/pull/829 +* Implement IPv6 capability by @itz-Jana in https://github.com/sissbruecker/linkding/pull/826 + +### New Contributors +* @itz-Jana made their first contribution in https://github.com/sissbruecker/linkding/pull/826 + +**Full Changelog**: https://github.com/sissbruecker/linkding/compare/v1.33.0...v1.34.0 + +--- + ## v1.33.0 (14/09/2024) ### What's Changed

    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∋Wn9 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 diff --git a/bookmarks/static/logo.png b/bookmarks/static/logo.png index 67552a01c5d1e6720824e488da68b7125aae2b2c..dc63476fee8317e5bbee0b85d62b6e1dc8cfa359 100644 GIT binary patch delta 2584 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 svg { + width: 20px; + height: 20px; + } + } + + & .has-icon-right > input, & .has-icon-right > textarea { + padding-right: 30px; + } + + & .has-icon-right > input:placeholder-shown ~ .btn.form-icon, + & .has-icon-right > textarea:placeholder-shown ~ .btn.form-icon { + visibility: visible; + } + + & .form-icon.loading { + visibility: hidden; + } + + & .form-input-hint.bookmark-exists { + display: none; + color: var(--warning-color); + } + + & .form-input-hint.auto-tags { + display: none; + color: var(--success-color); + } + + & details.notes textarea { + box-sizing: border-box; + } +} \ No newline at end of file diff --git a/bookmarks/styles/bookmark-form.scss b/bookmarks/styles/bookmark-form.scss deleted file mode 100644 index 1b31754b..00000000 --- a/bookmarks/styles/bookmark-form.scss +++ /dev/null @@ -1,49 +0,0 @@ -.bookmarks-form { - - .btn.form-icon { - padding: 0; - width: 20px; - height: 20px; - visibility: hidden; - color: $gray-color; - - &:focus, - &:hover, - &:active, - &.active { - color: $gray-color-dark; - } - - > svg { - width: 20px; - height: 20px; - } - } - - .has-icon-right > input, .has-icon-right > textarea { - padding-right: 30px; - } - - .has-icon-right > input:placeholder-shown ~ .btn.form-icon, - .has-icon-right > textarea:placeholder-shown ~ .btn.form-icon { - visibility: visible; - } - - .form-icon.loading { - visibility: hidden; - } - - .form-input-hint.bookmark-exists { - display: none; - color: $warning-color; - } - - .form-input-hint.auto-tags { - display: none; - color: $success-color; - } - - details.notes textarea { - box-sizing: border-box; - } -} \ No newline at end of file diff --git a/bookmarks/styles/bookmark-page.css b/bookmarks/styles/bookmark-page.css new file mode 100644 index 00000000..42a823a4 --- /dev/null +++ b/bookmarks/styles/bookmark-page.css @@ -0,0 +1,457 @@ +:root { + --bookmark-title-color: var(--primary-text-color); + --bookmark-title-weight: 500; + --bookmark-description-color: var(--text-color); + --bookmark-description-weight: 400; + --bookmark-actions-color: var(--secondary-text-color); + --bookmark-actions-hover-color: var(--text-color); + --bookmark-actions-weight: 400; + --bulk-actions-bg-color: var(--gray-50); +} + +/* Bookmark page grid */ +.bookmarks-page.grid { + grid-gap: var(--unit-9); +} + +/* Bookmark area header controls */ +.bookmarks-page .search-container { + flex: 1 1 0; + display: flex; + max-width: 300px; + margin-left: auto; + + & form { + width: 100%; + } + + @media (max-width: 600px) { + max-width: initial; + margin-left: 0; + } + + /* Regular input */ + + & input[type='search'] { + height: var(--control-size); + -webkit-appearance: none; + } + + /* Enhanced auto-complete input */ + /* This needs a bit more wrangling to make the CSS component align with the attached button */ + + & .form-autocomplete { + height: var(--control-size); + + & .form-autocomplete-input { + width: 100%; + height: var(--control-size); + + & input[type='search'] { + width: 100%; + height: 100%; + margin: 0; + border: none; + } + } + } + + /* Group search options button with search button */ + height: var(--control-size); + border-radius: var(--border-radius); + box-shadow: var(--box-shadow-xs); + + & input, & .form-autocomplete-input { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + box-shadow: none; + } + + & .dropdown-toggle { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + box-shadow: none; + outline-offset: calc(var(--focus-outline-offset) * -1); + } + + /* Search option menu styles */ + + & .dropdown { + & .menu { + padding: var(--unit-4); + min-width: 250px; + font-size: var(--font-size-sm); + } + + & .menu .actions { + margin-top: var(--unit-4); + display: flex; + justify-content: space-between; + } + + & .form-group:first-of-type { + margin-top: 0; + } + + & .form-group { + margin-bottom: var(--unit-3); + } + + & .radio-group { + & .form-label { + margin-bottom: var(--unit-1); + } + + & .form-radio.form-inline { + margin: 0 var(--unit-2) 0 0; + padding: 0; + display: inline-flex; + align-items: center; + column-gap: var(--unit-1); + } + + & .form-icon { + top: 0; + position: relative; + } + } + } +} + +/* Bookmark list */ +ul.bookmark-list { + list-style: none; + margin: 0; + padding: 0; + + /* Increase line-height for better separation within / between items */ + line-height: 1.1rem; +} + +@keyframes appear { + 0% { + opacity: 0; + } + 90% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +/* Bookmarks */ +li[ld-bookmark-item] { + position: relative; + display: flex; + gap: var(--unit-2); + margin-top: 0; + margin-bottom: var(--unit-3); + + & .content { + flex: 1 1 0; + min-width: 0; + } + + & img.preview-image { + flex: 0 0 auto; + width: 100px; + height: 60px; + margin-top: var(--unit-h); + object-fit: cover; + border-radius: var(--border-radius); + border: solid 1px var(--border-color); + } + + & .form-checkbox.bulk-edit-checkbox { + display: none; + } + + & .title { + position: relative; + } + + & .title img { + position: absolute; + width: 16px; + height: 16px; + left: 0; + top: 50%; + transform: translateY(-50%); + pointer-events: none; + } + + & .title img + a { + padding-left: 22px; + } + + & .title a { + color: var(--bookmark-title-color); + font-weight: var(--bookmark-title-weight); + display: block; + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + & .title a[data-tooltip]:hover::after, & .title a[data-tooltip]:focus::after { + content: attr(data-tooltip); + position: absolute; + z-index: 10; + top: 100%; + left: 50%; + transform: translateX(-50%); + width: max-content; + max-width: 90%; + height: fit-content; + background-color: #292f62; + color: #fff; + padding: var(--unit-1); + border-radius: var(--border-radius); + border: 1px solid #424a8c; + font-size: var(--font-size-sm); + font-style: normal; + white-space: normal; + pointer-events: none; + animation: 0.3s ease 0s appear; + } + + @media (pointer: coarse) { + & .title a[data-tooltip]::after { + display: none; + } + } + + &.unread .title a { + font-style: italic; + } + + & .url-path, & .url-display { + font-size: var(--font-size-sm); + color: var(--secondary-link-color); + } + + & .description { + color: var(--bookmark-description-color); + font-weight: var(--bookmark-description-weight); + } + + & .description.separate { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: var(--ld-bookmark-description-max-lines, 1); + overflow: hidden; + } + + & .tags { + & a, & a:visited:hover { + color: var(--alternative-color); + } + } + + & .actions, & .extra-actions { + display: flex; + align-items: baseline; + flex-wrap: wrap; + column-gap: var(--unit-2); + } + + @media (max-width: 600px) { + & .extra-actions { + width: 100%; + margin-top: var(--unit-1); + } + } + + & .actions { + color: var(--bookmark-actions-color); + font-size: var(--font-size-sm); + + & a, & button.btn-link { + color: var(--bookmark-actions-color); + --btn-icon-color: var(--bookmark-actions-color); + font-weight: var(--bookmark-actions-weight); + padding: 0; + height: auto; + vertical-align: unset; + border: none; + box-sizing: border-box; + transition: none; + text-decoration: none; + + &:focus, + &:hover, + &:active, + &.active { + color: var(--bookmark-actions-hover-color); + --btn-icon-color: var(--bookmark-actions-hover-color); + } + } + } +} + +.bookmark-pagination { + margin-top: var(--unit-4); + + /* Remove left padding from first pagination link */ + + & .page-item:first-child a { + padding-left: 0; + } +} + +.tag-cloud { + /* Increase line-height for better separation within / between items */ + line-height: 1.1rem; + + & .selected-tags { + margin-bottom: var(--unit-4); + + & a, + & a:visited:hover { + color: var(--error-color); + } + } + + & .unselected-tags { + & a, + & a:visited:hover { + color: var(--alternative-color); + } + } + + & .group { + margin-bottom: var(--unit-3); + } + + & .highlight-char { + font-weight: bold; + text-transform: uppercase; + color: var(--alternative-color-dark); + } +} + +/* Bookmark notes */ +ul.bookmark-list { + & .notes { + display: none; + max-height: 300px; + margin: var(--unit-1) 0; + overflow-y: auto; + background: var(--body-color-contrast); + border-radius: var(--border-radius); + } + + & .notes .markdown { + padding: var(--unit-2) var(--unit-3); + } + + &.show-notes .notes, + & li.show-notes .notes { + display: block; + } +} + +/* Bookmark bulk edit */ +:root { + --bulk-edit-toggle-width: 16px; + --bulk-edit-toggle-offset: 8px; + --bulk-edit-bar-offset: calc(var(--bulk-edit-toggle-width) + (2 * var(--bulk-edit-toggle-offset))); + --bulk-edit-transition-duration: 400ms; +} + +[ld-bulk-edit] { + & .bulk-edit-bar { + margin-top: -1px; + margin-left: calc(-1 * var(--bulk-edit-bar-offset)); + margin-bottom: var(--unit-4); + max-height: 0; + overflow: hidden; + transition: max-height var(--bulk-edit-transition-duration); + background: var(--bulk-actions-bg-color); + } + + &.active .bulk-edit-bar { + max-height: 37px; + border-bottom: solid 1px var(--secondary-border-color); + } + + /* Hide section border when bulk edit bar is opened, otherwise borders overlap in dark mode due to using contrast colors */ + &.active section:first-of-type .content-area-header { + border-bottom-color: transparent; + } + + /* remove overflow after opening animation, otherwise tag autocomplete overlay gets cut off */ + + &.active:not(.activating) .bulk-edit-bar { + overflow: visible; + } + + /* All checkbox */ + + & .form-checkbox.bulk-edit-checkbox.all { + display: block; + width: var(--bulk-edit-toggle-width); + margin: 0 0 0 var(--bulk-edit-toggle-offset); + padding: 0; + } + + /* Bookmark checkboxes */ + + & li[ld-bookmark-item] .form-checkbox.bulk-edit-checkbox { + display: block; + position: absolute; + width: var(--bulk-edit-toggle-width); + min-height: var(--bulk-edit-toggle-width); + left: calc(-1 * var(--bulk-edit-toggle-width) - var(--bulk-edit-toggle-offset)); + top: 50%; + transform: translateY(-50%); + padding: 0; + margin: 0; + visibility: hidden; + opacity: 0; + transition: all var(--bulk-edit-transition-duration); + + .form-icon { + top: 0; + } + } + + &.active li[ld-bookmark-item] .form-checkbox.bulk-edit-checkbox { + visibility: visible; + opacity: 1; + } + + /* Actions */ + + & .bulk-edit-actions { + display: flex; + align-items: center; + padding: var(--unit-1) 0; + border-top: solid 1px var(--secondary-border-color); + gap: var(--unit-2); + + & button { + --control-padding-x-sm: 0; + } + + & button:hover { + text-decoration: underline; + } + + & > input, + & .form-autocomplete, + & select { + width: auto; + max-width: 140px; + -webkit-appearance: none; + } + + & .select-across { + margin: 0 0 0 auto; + font-size: var(--font-size-sm); + } + } +} diff --git a/bookmarks/styles/bookmark-page.scss b/bookmarks/styles/bookmark-page.scss deleted file mode 100644 index a4d63fe2..00000000 --- a/bookmarks/styles/bookmark-page.scss +++ /dev/null @@ -1,408 +0,0 @@ -.bookmarks-page.grid { - grid-gap: $unit-9; -} - -/* Bookmark area header controls */ -.bookmarks-page .content-area-header { - --searchbox-max-width: 350px; - - @media (max-width: $size-sm) { - --searchbox-max-width: initial; - flex-direction: column; - } -} - -.bookmarks-page .search-container { - flex: 1 1 0; - display: flex; - justify-content: flex-end; - - // Regular input - input[type='search'] { - height: $control-size; - -webkit-appearance: none; - } - - // Enhanced auto-complete input - // This needs a bit more wrangling to make the CSS component align with the attached button - .form-autocomplete { - height: $control-size; - - .form-autocomplete-input { - width: 100%; - height: $control-size; - - input[type='search'] { - width: 100%; - height: 100%; - margin: 0; - border: none; - } - } - } - - .input-group { - flex: 1 1 0; - min-width: var(--searchbox-min-width); - max-width: var(--searchbox-max-width); - } - - .input-group > :first-child { - flex: 1 1 0; - } - - // Group search options button with search button - .input-group input[type='submit'] { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - - .dropdown-toggle { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - - .dropdown { - margin-left: -1px; - } - - // Search option menu styles - .dropdown { - .menu { - padding: $unit-4; - min-width: 250px; - font-size: $font-size-sm; - } - - .menu .actions { - margin-top: $unit-4; - display: flex; - justify-content: space-between; - } - - .radio-group { - margin-bottom: $unit-1; - - .form-label { - padding-bottom: 0; - } - - .form-radio.form-inline { - margin: 0 $unit-2 0 0; - padding: 0; - display: inline-flex; - align-items: center; - column-gap: $unit-1; - } - - .form-icon { - top: 0; - position: relative; - } - } - } -} - -/* Bookmark list */ -ul.bookmark-list { - list-style: none; - margin: 0; - padding: 0; - - /* Increase line-height for better separation within / between items */ - line-height: 1.1rem; -} - -@keyframes appear { - 0% { - opacity: 0; - } - 90% { - opacity: 0; - } - 100% { - opacity: 1; - } -} - -/* Bookmarks */ -li[ld-bookmark-item] { - position: relative; - display: flex; - gap: $unit-2; - margin-top: $unit-2; - - .content { - flex: 1 1 0; - min-width: 0; - } - - img.preview-image { - flex: 0 0 auto; - width: 100px; - height: 60px; - margin-top: $unit-h; - object-fit: cover; - border-radius: $border-radius; - border: solid 1px $border-color-dark; - } - - .form-checkbox.bulk-edit-checkbox { - display: none; - } - - .title { - position: relative; - } - - .title img { - position: absolute; - width: 16px; - height: 16px; - left: 0; - top: 50%; - transform: translateY(-50%); - pointer-events: none; - } - - .title img + a { - padding-left: 22px; - } - - .title a { - display: block; - width: 100%; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - } - - .title a[data-tooltip]:hover::after, .title a[data-tooltip]:focus::after { - content: attr(data-tooltip); - position: absolute; - z-index: 10; - top: 100%; - left: 50%; - transform: translateX(-50%); - width: max-content; - max-width: 90%; - height: fit-content; - background-color: #292f62; - color: #fff; - padding: $unit-1; - border-radius: $border-radius; - border: 1px solid #424a8c; - font-size: $font-size-sm; - font-style: normal; - white-space: normal; - pointer-events: none; - animation: 0.3s ease 0s appear; - } - - @media (pointer:coarse) { - .title a[data-tooltip]::after { - display: none; - } - } - - &.unread .title a { - font-style: italic; - } - - .url-path, .url-display { - font-size: $font-size-sm; - color: $secondary-link-color; - } - - .description { - color: $gray-color-dark; - } - - .description.separate { - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: var(--ld-bookmark-description-max-lines, 1); - overflow: hidden; - } - - .tags { - a, a:visited:hover { - color: $alternative-color; - } - } - - .actions, .extra-actions { - display: flex; - align-items: baseline; - flex-wrap: wrap; - column-gap: $unit-2; - } - - @media (max-width: $size-sm) { - .extra-actions { - width: 100%; - margin-top: $unit-1; - } - } - - .actions { - font-size: $font-size-sm; - - a, button.btn-link { - color: $gray-color; - padding: 0; - height: auto; - vertical-align: unset; - border: none; - transition: none; - text-decoration: none; - - &:focus, - &:hover, - &:active, - &.active { - color: $gray-color-dark; - } - } - } -} - -.bookmark-pagination { - margin-top: $unit-4; -} - -.tag-cloud { - /* Increase line-height for better separation within / between items */ - line-height: 1.1rem; - - .selected-tags { - margin-bottom: $unit-4; - - a, a:visited:hover { - color: $error-color; - } - } - - .unselected-tags { - a, a:visited:hover { - color: $alternative-color; - } - } - - .group { - margin-bottom: $unit-2; - } - - .highlight-char { - font-weight: bold; - text-transform: uppercase; - color: $alternative-color-dark; - } -} - -/* Bookmark notes */ -ul.bookmark-list { - .notes { - display: none; - max-height: 300px; - margin: $unit-1 0; - overflow-y: auto; - } - - .notes .markdown { - padding: $unit-2 $unit-3; - } - - &.show-notes .notes, - li.show-notes .notes { - display: block; - } -} - -/* Bookmark bulk edit */ -$bulk-edit-toggle-width: 16px; -$bulk-edit-toggle-offset: 8px; -$bulk-edit-bar-offset: $bulk-edit-toggle-width + (2 * $bulk-edit-toggle-offset); -$bulk-edit-transition-duration: 400ms; - -[ld-bulk-edit] { - .bulk-edit-bar { - margin-top: -1px; - margin-left: -$bulk-edit-bar-offset; - margin-bottom: $unit-3; - max-height: 0; - overflow: hidden; - transition: max-height $bulk-edit-transition-duration; - } - - &.active .bulk-edit-bar { - max-height: 37px; - border-bottom: solid 1px $border-color; - } - - /* remove overflow after opening animation, otherwise tag autocomplete overlay gets cut off */ - &.active:not(.activating) .bulk-edit-bar { - overflow: visible; - } - - /* All checkbox */ - .form-checkbox.bulk-edit-checkbox.all { - display: block; - width: $bulk-edit-toggle-width; - margin: 0 0 0 $bulk-edit-toggle-offset; - padding: 0; - } - - /* Bookmark checkboxes */ - li[ld-bookmark-item] .form-checkbox.bulk-edit-checkbox { - display: block; - position: absolute; - width: $bulk-edit-toggle-width; - min-height: $bulk-edit-toggle-width; - left: -$bulk-edit-toggle-width - $bulk-edit-toggle-offset; - top: 50%; - transform: translateY(-50%); - padding: 0; - margin: 0; - visibility: hidden; - opacity: 0; - transition: all $bulk-edit-transition-duration; - - .form-icon { - top: 0; - } - } - - &.active li[ld-bookmark-item] .form-checkbox.bulk-edit-checkbox { - visibility: visible; - opacity: 1; - } - - /* Actions */ - .bulk-edit-actions { - display: flex; - align-items: center; - padding: $unit-1 0; - border-top: solid 1px $border-color; - gap: $unit-2; - - button { - padding: 0 !important; - } - - button:hover { - text-decoration: underline; - } - - > input, .form-autocomplete, select { - width: auto; - max-width: 140px; - -webkit-appearance: none; - } - - .select-across { - margin: 0 0 0 auto; - font-size: $font-size-sm; - } - } -} diff --git a/bookmarks/styles/components.css b/bookmarks/styles/components.css new file mode 100644 index 00000000..f485f0e3 --- /dev/null +++ b/bookmarks/styles/components.css @@ -0,0 +1,60 @@ +/* Shared components */ + +/* Content area component */ +section.content-area { + h2 { + font-size: var(--font-size-lg); + } + + .content-area-header { + border-bottom: solid 1px var(--secondary-border-color); + display: flex; + flex-wrap: wrap; + column-gap: var(--unit-5); + padding-bottom: var(--unit-2); + margin-bottom: var(--unit-4); + + h2 { + flex: 0 0 auto; + line-height: var(--unit-9); + margin: 0; + } + + .header-controls { + flex: 1 1 0; + display: flex; + } + } +} + +@media (max-width: 600px) { + section.content-area .content-area-header { + flex-direction: column; + } +} + +/* Confirm button component */ +span.confirmation { + display: flex; + align-items: baseline; + gap: var(--unit-1); + color: var(--error-color) !important; + + svg { + align-self: center; + } + + .btn.btn-link { + color: var(--error-color) !important; + + &:hover { + text-decoration: underline; + } + } +} + +/* Divider */ +.divider { + border-bottom: solid 1px var(--secondary-border-color); + margin: var(--unit-5) 0; +} \ No newline at end of file diff --git a/bookmarks/styles/layout.css b/bookmarks/styles/layout.css new file mode 100644 index 00000000..fb759f40 --- /dev/null +++ b/bookmarks/styles/layout.css @@ -0,0 +1,39 @@ +/* Main layout */ +body { + margin: 20px 10px; + + @media (min-width: 600px) { + /* Horizontal offset accounts for checkboxes that show up in bulk edit mode */ + margin: 20px 32px; + } +} + +header { + margin-bottom: var(--unit-9); + + .logo { + width: 28px; + height: 28px; + } + + a:hover { + text-decoration: none; + } + + h1 { + margin: 0 0 0 var(--unit-3); + font-size: var(--font-size-lg); + } +} + +header .toasts { + margin-bottom: 20px; + + .toast { + margin-bottom: 0.4rem; + } + + .toast a.btn-clear:visited { + color: currentColor; + } +} diff --git a/bookmarks/styles/markdown.css b/bookmarks/styles/markdown.css new file mode 100644 index 00000000..f75460ce --- /dev/null +++ b/bookmarks/styles/markdown.css @@ -0,0 +1,40 @@ +.markdown { + & p, & ul, & ol, & pre, & blockquote { + margin: 0 0 var(--unit-2) 0; + } + + & > *:first-child { + margin-top: 0; + } + + & > *:last-child { + margin-bottom: 0; + } + + & ul, & ol { + margin-left: var(--unit-4); + } + + & ul li, & ol li { + margin-top: var(--unit-1); + } + + & pre { + padding: var(--unit-1) var(--unit-2); + background-color: var(--code-bg-color); + border-radius: var(--unit-1); + overflow-x: auto; + } + + & pre code { + background: none; + box-shadow: none; + padding: 0; + } + + & > pre:first-child:last-child { + padding: 0; + background: none; + border-radius: 0; + } +} diff --git a/bookmarks/styles/markdown.scss b/bookmarks/styles/markdown.scss deleted file mode 100644 index df88b5d9..00000000 --- a/bookmarks/styles/markdown.scss +++ /dev/null @@ -1,40 +0,0 @@ -.markdown { - p, ul, ol, pre, blockquote { - margin: 0 0 $unit-2 0; - } - - > *:first-child { - margin-top: 0; - } - - > *:last-child { - margin-bottom: 0; - } - - ul, ol { - margin-left: $unit-4; - } - - ul li, ol li { - margin-top: $unit-1; - } - - pre { - padding: $unit-1 $unit-2; - background-color: $code-bg-color; - border-radius: $unit-1; - overflow-x: auto; - } - - pre code { - background: none; - box-shadow: none; - padding: 0; - } - - > pre:first-child:last-child { - padding: 0; - background: none; - border-radius: 0; - } -} diff --git a/bookmarks/styles/reader-mode.scss b/bookmarks/styles/reader-mode.css similarity index 100% rename from bookmarks/styles/reader-mode.scss rename to bookmarks/styles/reader-mode.css diff --git a/bookmarks/styles/responsive.scss b/bookmarks/styles/responsive.css similarity index 80% rename from bookmarks/styles/responsive.scss rename to bookmarks/styles/responsive.css index 6c33771e..de0dde8f 100644 --- a/bookmarks/styles/responsive.scss +++ b/bookmarks/styles/responsive.css @@ -1,10 +1,3 @@ -.container { - margin-left: auto; - margin-right: auto; - width: 100%; - max-width: $size-lg; -} - .show-sm, .show-md { display: none !important; @@ -26,11 +19,18 @@ width: 100%; } +.container { + margin-left: auto; + margin-right: auto; + width: 100%; + max-width: var(--size-lg); +} + .grid { --grid-columns: 3; display: grid; grid-template-columns: repeat(var(--grid-columns), 1fr); - grid-gap: $unit-4; + grid-gap: var(--unit-4); } .grid > * { @@ -46,18 +46,18 @@ } .col-1 { - grid-column: unquote("span min(1, var(--grid-columns))"); + grid-column: span min(1, var(--grid-columns)); } .col-2 { - grid-column: unquote("span min(2, var(--grid-columns))"); + grid-column: span min(2, var(--grid-columns)); } .col-3 { - grid-column: unquote("span min(3, var(--grid-columns))"); + grid-column: span min(3, var(--grid-columns)); } -@media (max-width: $size-md) { +@media (max-width: 840px) { .hide-md { display: none !important; } @@ -86,7 +86,7 @@ } } -@media (max-width: $size-sm) { +@media (max-width: 600px) { .hide-sm { display: none !important; } diff --git a/bookmarks/styles/settings.scss b/bookmarks/styles/settings.css similarity index 61% rename from bookmarks/styles/settings.scss rename to bookmarks/styles/settings.css index 0b7d8b3c..d60dfac1 100644 --- a/bookmarks/styles/settings.scss +++ b/bookmarks/styles/settings.css @@ -1,9 +1,9 @@ .settings-page { section.content-area { - margin-bottom: $unit-10; + margin-bottom: var(--unit-10); h2 { - margin-bottom: $unit-3; + margin-bottom: var(--unit-3); } } @@ -17,6 +17,10 @@ } section.about table { - max-width: 500px; + max-width: 400px; + } + + & .form-group { + margin-bottom: var(--unit-4); } } diff --git a/bookmarks/styles/spectre.scss b/bookmarks/styles/spectre.scss deleted file mode 100644 index 628b7ded..00000000 --- a/bookmarks/styles/spectre.scss +++ /dev/null @@ -1,204 +0,0 @@ -// Customized Spectre CSS imports, removing modules that are not used -// See node_modules/spectre.css/src/spectre.scss for the original version - -// Variables and mixins -@import "../../node_modules/spectre.css/src/variables"; - -// Customize variables to reduce font and control sizes - -// Can use CSS variables for font sizes, as they are not used in SCSS calculations -$font-size: var(--font-size); -$font-size-sm: var(--font-size-sm); -$font-size-lg: var(--font-size-lg); - -// Can't use CSS variables for these, used in SCSS calculations -$line-height: 1rem; -$control-size: $unit-8; -$control-size-sm: $unit-6; -$control-size-lg: $unit-9; - -// Declare defaults for CSS variables, expose SCSS variables as CSS variables -html { - --font-size: 0.7rem; - --font-size-sm: 0.65rem; - --font-size-lg: 0.8rem; - - --control-size: #{$control-size}; - --control-size-sm: #{$control-size-sm}; - --control-size-lg: #{$control-size-lg}; -} - -// Mixins -@import "../../node_modules/spectre.css/src/mixins"; - -/*! Spectre.css v#{$version} | MIT License | github.com/picturepan2/spectre */ -// Reset and dependencies -@import "../../node_modules/spectre.css/src/normalize"; -@import "../../node_modules/spectre.css/src/base"; - -// Elements -@import "../../node_modules/spectre.css/src/typography"; -@import "../../node_modules/spectre.css/src/asian"; -@import "../../node_modules/spectre.css/src/tables"; -@import "../../node_modules/spectre.css/src/buttons"; -@import "../../node_modules/spectre.css/src/forms"; -@import "../../node_modules/spectre.css/src/labels"; -@import "../../node_modules/spectre.css/src/codes"; -@import "../../node_modules/spectre.css/src/media"; - -// Components -@import "../../node_modules/spectre.css/src/badges"; -@import "../../node_modules/spectre.css/src/dropdowns"; -@import "../../node_modules/spectre.css/src/empty"; -@import "../../node_modules/spectre.css/src/menus"; -@import "../../node_modules/spectre.css/src/modals"; -@import "../../node_modules/spectre.css/src/pagination"; -@import "../../node_modules/spectre.css/src/tabs"; -@import "../../node_modules/spectre.css/src/toasts"; -@import "../../node_modules/spectre.css/src/tooltips"; - -// Utility classes -@import "../../node_modules/spectre.css/src/animations"; -@import "../../node_modules/spectre.css/src/utilities"; - -// Auto-complete component -@import "../../node_modules/spectre.css/src/autocomplete"; - - -/* Spectre overrides / fixes */ - -// Fix up visited styles -a:visited { - color: $link-color; -} - -a:visited:hover { - color: $link-color-dark; -} - -.btn-link:visited:not(.btn-primary) { - color: $link-color; -} - -.btn-link:visited:not(.btn-primary):hover { - color: $link-color-dark; -} - -// Disable transitions on buttons, which can otherwise flicker while loading CSS file -// something to do with .btn applying a transition for background, and then .btn-link setting a different background -.btn { - transition: none !important; -} - -// Make code work with light and dark theme -code { - color: $gray-color-dark; - background-color: $code-bg-color; - box-shadow: 1px 1px 0 $code-shadow-color; -} - -// Remove left padding from first pagination link -.pagination .page-item:first-child a { - padding-left: 0; -} - -// Override border color for tab block -.tab-block { - border-bottom: solid 1px $border-color; -} - -// Fix padding for first menu item -ul.menu li:first-child { - margin-top: 0; -} - -// Form auto-complete menu -.form-autocomplete .menu { - .menu-item.selected > a, .menu-item > a:hover { - background: $secondary-color; - color: $primary-color; - } - - .group-item, .group-item:hover { - color: $gray-color; - text-transform: uppercase; - background: none; - font-size: 0.6rem; - font-weight: bold; - } -} - -.modal { - // Add border to separate from background in dark mode - .modal-container { - border: solid 1px $border-color; - } - - // Fix modal header to use default color - .modal-header { - color: inherit; - } -} - -// Customize modal animation -@keyframes fade-in { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} - -@keyframes fade-out { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} - -.modal.active .modal-container, .modal.active .modal-overlay { - animation: fade-in .15s ease 1; -} - -.modal.active.closing .modal-container, .modal.active.closing .modal-overlay { - animation: fade-out .15s ease 1; -} - -// Customize menu animation -.dropdown .menu { - animation: fade-in .15s ease 1; -} - -// Modal close button -.modal .modal-header button.close { - background: none; - border: none; - padding: 0; - line-height: 0; - cursor: pointer; - opacity: .85; - color: $gray-color-dark; - - &:hover { - opacity: 1; - } -} - -// Increase input font size on small viewports to prevent zooming on focus the input -// on mobile devices. 430px relates to the "normalized" iPhone 14 Pro Max -// viewport size -@media screen and (max-width: 430px) { - .form-input { - font-size: 16px; - } -} - -// Hide tooltips on mobile -@media (pointer:coarse) { - .tooltip::after { - display: none; - } -} diff --git a/bookmarks/styles/theme-dark.css b/bookmarks/styles/theme-dark.css new file mode 100644 index 00000000..6f4f8000 --- /dev/null +++ b/bookmarks/styles/theme-dark.css @@ -0,0 +1,143 @@ +@import "theme-light.css"; + +:root { + /* Color palette */ + --contrast-5: hsla(241, 65%, 85%, 0.06); + --contrast-10: hsla(241, 60%, 80%, 0.14); + --contrast-20: hsla(241, 64%, 82%, 0.23); + --contrast-30: hsla(241, 69%, 84%, 0.32); + --contrast-40: hsla(241, 73%, 86%, 0.41); + --contrast-50: hsla(241, 78%, 88%, 0.5); + --contrast-60: hsla(241, 82%, 90%, 0.58); + --contrast-70: hsla(241, 87%, 92%, 0.69); + --contrast-80: hsla(241, 91%, 94%, 0.8); + --contrast-90: hsla(241, 96%, 96%, 0.9); + + --primary-color: hsl(241, 75%, 64%); + --primary-color-highlight: hsl(241, 75%, 68%); + --primary-color-shade: hsl(241, 75%, 64%, 0.42); + + --alternative-color: hsl(179, 50%, 58%); + --alternative-color-dark: hsl(179, 80%, 75%); + + --success-color: hsl(142, 76%, 36%); + --success-color-highlight: hsl(142, 76%, 40%); + --success-color-shade: hsla(142, 76%, 36%, 0.1); + + --warning-color: hsl(38, 92%, 50%); + --warning-color-highlight: hsl(38, 92%, 55%); + --warning-color-shade: hsla(38, 92%, 50%, 0.1); + + --error-color: hsl(0, 80%, 60%); + --error-color-highlight: hsl(0, 72%, 60%); + --error-color-shade: hsla(0, 72%, 51%, 0.1); + + /* Core colors */ + --text-color: var(--gray-300); + --secondary-text-color: var(--gray-400); + --tertiary-text-color: var(--gray-500); + --contrast-text-color: #fff; + --primary-text-color: hsl(241, 82%, 82%); + + --link-color: var(--primary-text-color); + --secondary-link-color: hsla(241, 82%, 82%, 0.8); + + --icon-color: var(--text-color); + + --border-color: var(--contrast-30); + --secondary-border-color: var(--contrast-20); + + --body-color: hsl(241, 15%, 14%); + --body-color-contrast: var(--contrast-10); + + /* Focus */ + --focus-outline: 2px solid hsl(241, 100%, 78%); + --focus-outline-offset: 2px; + + /* Shadows */ + --box-shadow-xs: none; + --box-shadow: none; + --box-shadow-lg: none; +} + +:root { + --input-bg-color: var(--contrast-5); + --input-disabled-bg-color: var(--contrast-30); + --input-text-color: var(--text-color); + --input-hint-color: var(--secondary-text-color); + --input-border-color: var(--border-color); + --input-placeholder-color: var(--tertiary-text-color); + --input-box-shadow: var(--box-shadow-xs); + + --checkbox-bg-color: var(--contrast-10); + --checkbox-checked-bg-color: var(--primary-color); + --checkbox-disabled-bg-color: var(--contrast-30); + --checkbox-border-color: var(--border-color); + --checkbox-icon-color: #fff; + + --switch-bg-color: var(--contrast-10); + --switch-border-color: var(--border-color); + --switch-toggle-color: var(--text-color); +} + +:root { + --btn-bg-color: var(--contrast-5); + --btn-hover-bg-color: var(--contrast-20); + --btn-border-color: var(--border-color); + --btn-text-color: var(--text-color); + --btn-icon-color: var(--icon-color); + --btn-font-weight: 400; + --btn-box-shadow: var(--box-shadow-xs); + + --btn-primary-bg-color: var(--primary-color); + --btn-primary-hover-bg-color: var(--primary-color-highlight); + --btn-primary-text-color: var(--contrast-text-color); + + --btn-success-bg-color: var(--success-color); + --btn-success-hover-bg-color: var(--success-color-highlight); + --btn-success-text-color: var(--contrast-text-color); + + --btn-error-bg-color: var(--error-color); + --btn-error-hover-bg-color: var(--error-color-highlight); + --btn-error-text-color: var(--contrast-text-color); + + --btn-link-text-color: var(--link-color); + --btn-link-hover-text-color: var(--link-color); +} + +:root { + --modal-overlay-bg-color: hsla(229, 21%, 16%, 0.55); + --modal-container-bg-color: hsl(241, 20%, 20%); + --modal-container-border-color: var(--contrast-30); + --modal-border-radius: var(--border-radius-lg); + --modal-box-shadow: none; +} + +:root { + --menu-bg-color: hsl(241, 20%, 20%); + --menu-border-color: var(--contrast-30); + --menu-border-radius: var(--border-radius); + --menu-box-shadow: none; + --menu-item-color: var(--text-color); + --menu-item-hover-color: var(--text-color); + --menu-item-bg-color: transparent; + --menu-item-hover-bg-color: var(--contrast-20); +} + +:root { + --tab-color: var(--text-color); + --tab-hover-color: var(--primary-text-color); + --tab-active-color: var(--primary-text-color); + --tab-highlight-color: var(--primary-text-color); +} + +:root { + --bookmark-title-color: var(--primary-text-color); + --bookmark-title-weight: 500; + --bookmark-description-color: var(--text-color); + --bookmark-description-weight: 400; + --bookmark-actions-color: var(--secondary-text-color); + --bookmark-actions-hover-color: var(--text-color); + --bookmark-actions-weight: 400; + --bulk-actions-bg-color: var(--contrast-5); +} \ No newline at end of file diff --git a/bookmarks/styles/theme-dark.scss b/bookmarks/styles/theme-dark.scss deleted file mode 100644 index ea1653dd..00000000 --- a/bookmarks/styles/theme-dark.scss +++ /dev/null @@ -1,66 +0,0 @@ -// Import custom variables -@import "variables-dark"; - -// Import Spectre CSS lib -@import "spectre"; - -// Import style modules -@import "base"; -@import "responsive"; -@import "bookmark-details"; -@import "bookmark-page"; -@import "bookmark-form"; -@import "settings"; -@import "markdown"; -@import "reader-mode"; - -/* Dark theme overrides */ - -// Buttons -.btn.btn-primary { - background: $dt-primary-button-color; - border-color: darken($dt-primary-button-color, 5%); - - &:hover, &:active, &:focus { - background: darken($dt-primary-button-color, 5%); - border-color: darken($dt-primary-button-color, 10%); - } -} - -// Focus ring -a:focus, .btn:focus { - box-shadow: 0 0 0 .1rem rgba($primary-color, .5); -} - -// Forms -.form-input:not(:placeholder-shown):invalid, -.form-input:not(:placeholder-shown):invalid:focus, -.has-error .form-input, -.form-input.is-error, -.has-error .form-select, -.form-select.is-error { - background: darken($error-color, 40%); -} - -.form-checkbox input:checked + .form-icon, .form-radio input:checked + .form-icon, .form-switch input:checked + .form-icon { - background: $dt-primary-input-color; - border-color: $dt-primary-input-color; -} - -.form-switch .form-icon::before, .form-switch input:active + .form-icon::before { - background: $light-color; -} - -.form-switch input:checked + .form-icon { - background: $dt-primary-input-color; - border-color: $dt-primary-input-color; -} - -.form-radio input:checked + .form-icon::before { - background: $light-color; -} - -// Pagination -.pagination .page-item.active a { - background: $dt-primary-button-color; -} diff --git a/bookmarks/styles/theme-light.css b/bookmarks/styles/theme-light.css new file mode 100644 index 00000000..57a5cd9d --- /dev/null +++ b/bookmarks/styles/theme-light.css @@ -0,0 +1,30 @@ +@import "theme/variables.css"; +@import "theme/_normalize.css"; +@import "theme/base.css"; +@import "theme/typography.css"; +@import "theme/asian.css"; +@import "theme/tables.css"; +@import "theme/buttons.css"; +@import "theme/forms.css"; +@import "theme/code.css"; +@import "theme/dropdowns.css"; +@import "theme/menus.css"; +@import "theme/badges.css"; +@import "theme/empty.css"; +@import "theme/modals.css"; +@import "theme/pagination.css"; +@import "theme/tabs.css"; +@import "theme/toasts.css"; +@import "theme/autocomplete.css"; +@import "theme/animations.css"; +@import "theme/utilities.css"; + +@import "responsive.css"; +@import "layout.css"; +@import "components.css"; +@import "bookmark-details.css"; +@import "bookmark-form.css"; +@import "bookmark-page.css"; +@import "markdown.css"; +@import "reader-mode.css"; +@import "settings.css"; diff --git a/bookmarks/styles/theme-light.scss b/bookmarks/styles/theme-light.scss deleted file mode 100644 index bf5ac014..00000000 --- a/bookmarks/styles/theme-light.scss +++ /dev/null @@ -1,15 +0,0 @@ -// Import custom variables -@import "variables-light"; - -// Import Spectre CSS lib -@import "spectre"; - -// Import style modules -@import "base"; -@import "responsive"; -@import "bookmark-details"; -@import "bookmark-page"; -@import "bookmark-form"; -@import "settings"; -@import "markdown"; -@import "reader-mode"; diff --git a/bookmarks/styles/theme/LICENSE b/bookmarks/styles/theme/LICENSE new file mode 100644 index 00000000..7d4eb706 --- /dev/null +++ b/bookmarks/styles/theme/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 - 2020 Yan Zhu + +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. diff --git a/bookmarks/styles/theme/_normalize.css b/bookmarks/styles/theme/_normalize.css new file mode 100644 index 00000000..db945bda --- /dev/null +++ b/bookmarks/styles/theme/_normalize.css @@ -0,0 +1,446 @@ +/* Manually forked from Normalize.css */ +/* normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */ + +/** + * 1. Change the default font family in all browsers (opinionated). + * 2. Correct the line height in all browsers. + * 3. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ + +/* Document + ========================================================================== */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 3 */ + -webkit-text-size-adjust: 100%; /* 3 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers (opinionated). + */ + +body { + margin: 0; +} + +/** + * Add the correct display in IE 9-. + */ + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ + +figcaption, +figure, +main { /* 1 */ + display: block; +} + +/** + * Add the correct margin in IE 8 (removed). + */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. (removed) + * 2. Correct the odd `em` font sizing in all browsers. + */ + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ +} + +/** + * Remove the outline on focused links when they are also active or hovered + * in all browsers (opinionated). + */ + +a:active, +a:hover { + outline-width: 0; +} + +/** + * Modify default styling of address. + */ + +address { + font-style: normal; +} + +/** + * 1. Remove the bottom border in Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. (removed) + */ + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ + +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: var(--mono-font-family); /* 1 (changed) */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. (Removed) + */ + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; + font-weight: 400; /* (added) */ +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +audio, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Remove the border on images inside links in IE 10-. + */ + +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 (changed) */ + font-size: inherit; /* 1 (changed) */ + line-height: inherit; /* 1 (changed) */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ + +button, +html [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule (removed). + */ + + +/** + * Change the border, margin, and padding in all browsers (opinionated) (changed). + */ + +fieldset { + border: 0; + margin: 0; + padding: 0; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ + +details, /* 1 */ +menu { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; + outline: none; +} + +/* Scripting + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +canvas { + display: inline-block; +} + +/** + * Add the correct display in IE. + */ + +template { + display: none; +} + +/* Hidden + ========================================================================== */ + +/** + * Add the correct display in IE 10-. + */ + +[hidden] { + display: none; +} diff --git a/bookmarks/styles/theme/animations.css b/bookmarks/styles/theme/animations.css new file mode 100644 index 00000000..53663767 --- /dev/null +++ b/bookmarks/styles/theme/animations.css @@ -0,0 +1,38 @@ +/* Animations */ +@keyframes loading { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +@keyframes slide-down { + 0% { + opacity: 0; + transform: translateY(calc(-1 * var(--unit-8))); + } + 100% { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes fade-out { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} diff --git a/bookmarks/styles/theme/asian.css b/bookmarks/styles/theme/asian.css new file mode 100644 index 00000000..537884c9 --- /dev/null +++ b/bookmarks/styles/theme/asian.css @@ -0,0 +1,43 @@ +/* Optimized for East Asian CJK */ +html:lang(zh), +html:lang(zh-Hans), +.lang-zh, +.lang-zh-hans { + font-family: var(--cjk-zh-hans-font-family); +} + +html:lang(zh-Hant), +.lang-zh-hant { + font-family: var(--cjk-zh-hant-font-family); +} + +html:lang(ja), +.lang-ja { + font-family: var(--cjk-jp-font-family); +} + +html:lang(ko), +.lang-ko { + font-family: var(--cjk-ko-font-family); +} + +:lang(zh), +:lang(ja), +.lang-cjk { + & ins, + & u { + border-bottom: var(--border-width) solid; + text-decoration: none; + } + + & del + del, + & del + s, + & ins + ins, + & ins + u, + & s + del, + & s + s, + & u + ins, + & u + u { + margin-left: .125em; + } +} diff --git a/bookmarks/styles/theme/autocomplete.css b/bookmarks/styles/theme/autocomplete.css new file mode 100644 index 00000000..7ab2b213 --- /dev/null +++ b/bookmarks/styles/theme/autocomplete.css @@ -0,0 +1,55 @@ +/* Autocomplete */ +.form-autocomplete { + position: relative; + + & .form-autocomplete-input { + align-content: flex-start; + display: flex; + flex-wrap: wrap; + height: auto; + min-height: var(--unit-8); + padding: var(--unit-h); + background: var(--input-bg-color); + + &.is-focused { + outline: var(--focus-outline); + outline-offset: calc(var(--focus-outline-offset) * -1); + } + + & .form-input { + background: transparent; + border-color: transparent; + box-shadow: none; + display: inline-block; + flex: 1 0 auto; + height: var(--unit-6); + line-height: var(--unit-4); + margin: var(--unit-h); + width: auto; + + &:focus { + outline: none; + } + } + } + + & .menu { + left: 0; + position: absolute; + top: 100%; + width: 100%; + + & .menu-item.selected > a, & .menu-item > a:hover { + background: var(--menu-item-hover-bg-color); + color: var(--menu-item-hover-color); + } + + & .group-item, & .group-item:hover { + color: var(--tertiary-text-color); + text-transform: uppercase; + background: none; + font-size: 0.6rem; + font-weight: bold; + } + } +} \ No newline at end of file diff --git a/bookmarks/styles/theme/badges.css b/bookmarks/styles/theme/badges.css new file mode 100644 index 00000000..4657cfc3 --- /dev/null +++ b/bookmarks/styles/theme/badges.css @@ -0,0 +1,64 @@ +/* Badges */ +.badge { + position: relative; + white-space: nowrap; + + &[data-badge], + &:not([data-badge]) { + &::after { + background: var(--primary-color); + background-clip: padding-box; + border-radius: .5rem; + box-shadow: 0 0 0 1px var(--body-color); + color: var(--contrast-text-color); + content: attr(data-badge); + display: inline-block; + transform: translate(-.05rem, -.5rem); + } + } + + &[data-badge] { + &::after { + font-size: var(--font-size-sm); + height: .9rem; + line-height: 1; + min-width: .9rem; + padding: .1rem .2rem; + text-align: center; + white-space: nowrap; + } + } + + &:not([data-badge]), + &[data-badge=""] { + &::after { + height: 6px; + min-width: 6px; + padding: 0; + width: 6px; + } + } + + /* Badges for Buttons */ + + &.btn { + &::after { + position: absolute; + top: 0; + right: 0; + transform: translate(50%, -50%); + } + } + + /* Badges for Avatars */ + + &.avatar { + &::after { + position: absolute; + top: 14.64%; + right: 14.64%; + transform: translate(50%, -50%); + z-index: var(--zindex-1); + } + } +} diff --git a/bookmarks/styles/theme/base.css b/bookmarks/styles/theme/base.css new file mode 100644 index 00000000..b6ec74dd --- /dev/null +++ b/bookmarks/styles/theme/base.css @@ -0,0 +1,61 @@ +/* Base */ +*, +*::before, +*::after { + box-sizing: inherit; +} + +html { + box-sizing: border-box; + font-size: var(--html-font-size); + line-height: var(--html-line-height); + -webkit-tap-highlight-color: transparent; + scrollbar-gutter: stable; +} + +/* Reserve space for vert. scrollbar to avoid layout shifting when scrollbars are added */ +html { + scrollbar-gutter: stable; +} + +@media (pointer: coarse) { + html { + scrollbar-gutter: initial; + } +} + +body { + background: var(--body-color); + color: var(--text-color); + font-family: var(--body-font-family); + font-size: var(--font-size); + overflow-x: hidden; + text-rendering: optimizeLegibility; +} + +a { + color: var(--link-color); + outline: none; + text-decoration: none; +} + +a:focus-visible { + outline: var(--focus-outline); + outline-offset: var(--focus-outline-offset); +} + +a:focus, +a:hover, +a:active, +a.active { + text-decoration: underline; +} + +summary { + cursor: pointer; +} + +summary:focus-visible { + outline: var(--focus-outline); + outline-offset: var(--focus-outline-offset); +} diff --git a/bookmarks/styles/theme/buttons.css b/bookmarks/styles/theme/buttons.css new file mode 100644 index 00000000..77959e42 --- /dev/null +++ b/bookmarks/styles/theme/buttons.css @@ -0,0 +1,257 @@ +/* Buttons */ +:root { + --btn-bg-color: var(--body-color); + --btn-hover-bg-color: var(--gray-50); + --btn-border-color: var(--border-color); + --btn-text-color: var(--text-color); + --btn-icon-color: var(--icon-color); + --btn-font-weight: 400; + --btn-box-shadow: var(--box-shadow-xs); + + --btn-primary-bg-color: var(--primary-color); + --btn-primary-hover-bg-color: var(--primary-color-highlight); + --btn-primary-text-color: var(--contrast-text-color); + + --btn-success-bg-color: var(--success-color); + --btn-success-hover-bg-color: var(--success-color-highlight); + --btn-success-text-color: var(--contrast-text-color); + + --btn-error-bg-color: var(--error-color); + --btn-error-hover-bg-color: var(--error-color-highlight); + --btn-error-text-color: var(--contrast-text-color); + + --btn-link-text-color: var(--link-color); + --btn-link-hover-text-color: var(--link-color); +} + +.btn { + appearance: none; + background: var(--btn-bg-color); + border: var(--border-width) solid var(--btn-border-color); + border-radius: var(--border-radius); + color: var(--btn-text-color); + font-weight: var(--btn-font-weight); + cursor: pointer; + display: inline-flex; + align-items: baseline; + justify-content: center; + font-size: var(--font-size); + height: var(--control-size); + line-height: var(--line-height); + outline: none; + padding: var(--control-padding-y) var(--control-padding-x); + box-shadow: var(--btn-box-shadow); + text-align: center; + text-decoration: none; + transition: background 0.2s, border 0.2s, box-shadow 0.2s, color 0.2s; + user-select: none; + vertical-align: middle; + white-space: nowrap; + + &:focus-visible { + outline: var(--focus-outline); + outline-offset: var(--focus-outline-offset); + } + + &:hover { + background: var(--btn-hover-bg-color); + text-decoration: none; + } + + &[disabled], + &:disabled, + &.disabled { + cursor: default; + opacity: 0.5; + pointer-events: none; + } + + &:focus, + &:hover, + &:active, + &.active { + text-decoration: none; + } + + /* Button Primary */ + + &.btn-primary { + background: var(--btn-primary-bg-color); + border-color: transparent; + color: var(--btn-primary-text-color); + --btn-icon-color: var(--btn-primary-text-color); + + &:hover { + background: var(--btn-primary-hover-bg-color); + } + } + + /* Button Colors */ + + &.btn-success { + background: var(--btn-success-bg-color); + border-color: transparent; + color: var(--btn-success-text-color); + --btn-icon-color: var(--btn-success-text-color); + + &:hover { + background: var(--btn-success-hover-bg-color); + } + } + + &.btn-error { + --btn-border-color: var(--error-color); + --btn-text-color: var(--error-color); + + &:hover { + --btn-hover-bg-color: var(--error-color-shade); + } + } + + /* Button Link */ + + &.btn-link { + background: transparent; + border-color: transparent; + box-shadow: none; + color: var(--btn-link-text-color); + --btn-icon-color: var(--btn-link-text-color); + + &:hover { + color: var(--btn-link-hover-text-color); + --btn-icon-color: var(--btn-link-hover-text-color); + } + + &:focus, + &:hover, + &:active, + &.active { + text-decoration: none; + } + } + + /* Button Sizes */ + + &.btn-sm { + font-size: var(--font-size-sm); + height: var(--control-size-sm); + padding: var(--control-padding-y-sm) var(--control-padding-x-sm); + } + + &.btn-lg { + font-size: var(--font-size-lg); + height: var(--control-size-lg); + padding: var(--control-padding-y-lg) var(--control-padding-x-lg); + } + + /* Button Block */ + + &.btn-block { + display: block; + width: 100%; + } + + /* Button Action */ + + &.btn-action { + width: var(--control-size); + padding-left: 0; + padding-right: 0; + + &.btn-sm { + width: var(--control-size-sm); + } + + &.btn-lg { + width: var(--control-size-lg); + } + } + + /* Button Clear */ + + &.btn-clear { + background: transparent; + border: 0; + color: currentColor; + box-shadow: none; + height: var(--unit-5); + line-height: var(--unit-4); + margin-left: var(--unit-1); + margin-right: -2px; + opacity: 1; + padding: var(--unit-h); + text-decoration: none; + width: var(--unit-5); + + &::before { + content: "\2715"; + } + } + + /* Wider button */ + + &.btn-wide { + padding-left: var(--unit-6); + padding-right: var(--unit-6); + } + + /* Small icon button */ + + &.btn-sm.btn-icon { + display: inline-flex; + align-items: baseline; + gap: var(--unit-h); + + svg { + align-self: center; + } + } + + /* Button icons */ + + & svg { + color: var(--btn-icon-color); + align-self: center; + } +} + +/* Button groups */ +.btn-group { + display: inline-flex; + flex-wrap: wrap; + + .btn { + flex: 1 0 auto; + + &:first-child:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + + &:not(:first-child):not(:last-child) { + border-radius: 0; + margin-left: calc(-1 * var(--border-width)); + } + + &:last-child:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + margin-left: calc(-1 * var(--border-width)); + } + + &:focus, + &:hover, + &:active, + &.active { + z-index: var(--zindex-0); + } + } + + &.btn-group-block { + display: flex; + + .btn { + flex: 1 0 0; + } + } +} \ No newline at end of file diff --git a/bookmarks/styles/theme/code.css b/bookmarks/styles/theme/code.css new file mode 100644 index 00000000..326d32da --- /dev/null +++ b/bookmarks/styles/theme/code.css @@ -0,0 +1,30 @@ +/* Code */ +:root { + --code-bg-color: var(--body-color-contrast); + --code-color: var(--text-color); +} + +code { + border-radius: var(--border-radius); + line-height: 1.25; + padding: .1rem .2rem; + background: var(--code-bg-color); + color: var(--code-color); + font-size: 85%; +} + +.code { + border-radius: var(--border-radius); + background: var(--code-bg-color); + color: var(--text-color); + position: relative; + + & code { + color: inherit; + display: block; + line-height: 1.5; + overflow-x: auto; + padding: var(--unit-2); + width: 100%; + } +} diff --git a/bookmarks/styles/theme/dropdowns.css b/bookmarks/styles/theme/dropdowns.css new file mode 100644 index 00000000..d421f686 --- /dev/null +++ b/bookmarks/styles/theme/dropdowns.css @@ -0,0 +1,36 @@ +/* Dropdown */ +.dropdown { + display: inline-block; + position: relative; + + .menu { + animation: fade-in .15s ease 1; + display: none; + left: 0; + max-height: 50vh; + overflow-y: auto; + position: absolute; + top: 100%; + } + + &.dropdown-right { + .menu { + left: auto; + right: 0; + } + } + + &.active .menu, + .dropdown-toggle:focus + .menu, + .menu:hover { + display: block; + } + + /* Fix dropdown-toggle border radius in button groups */ + .btn-group { + .dropdown-toggle:nth-last-child(2) { + border-bottom-right-radius: var(--border-radius); + border-top-right-radius: var(--border-radius); + } + } +} diff --git a/bookmarks/styles/theme/empty.css b/bookmarks/styles/theme/empty.css new file mode 100644 index 00000000..611e476c --- /dev/null +++ b/bookmarks/styles/theme/empty.css @@ -0,0 +1,21 @@ +/* Empty states (or Blank slates) */ +.empty { + background: var(--body-color-contrast); + border-radius: var(--border-radius); + color: var(--secondary-text-color); + text-align: center; + padding: var(--unit-16) var(--unit-8); + + .empty-icon { + margin-bottom: var(--layout-spacing-lg); + } + + .empty-title, + .empty-subtitle { + margin: var(--layout-spacing) auto; + } + + .empty-action { + margin-top: var(--layout-spacing-lg); + } +} diff --git a/bookmarks/styles/theme/forms.css b/bookmarks/styles/theme/forms.css new file mode 100644 index 00000000..a3eebb1e --- /dev/null +++ b/bookmarks/styles/theme/forms.css @@ -0,0 +1,515 @@ +/* Forms */ +:root { + --input-bg-color: var(--body-color); + --input-disabled-bg-color: var(--gray-100); + --input-text-color: var(--text-color); + --input-hint-color: var(--secondary-text-color); + --input-border-color: var(--border-color); + --input-placeholder-color: var(--tertiary-text-color); + --input-box-shadow: var(--box-shadow-xs); + + --checkbox-bg-color: var(--body-color); + --checkbox-checked-bg-color: var(--primary-color); + --checkbox-disabled-bg-color: var(--gray-100); + --checkbox-border-color: var(--border-color); + --checkbox-icon-color: #fff; + + --switch-bg-color: var(--gray-300); + --switch-border-color: var(--gray-400); + --switch-toggle-color: #fff; +} + +.form-group { + &:first-of-type { + margin-top: var(--unit-4); + } + &:not(:last-child) { + margin-bottom: var(--unit-4); + } +} + +fieldset { + margin-bottom: var(--layout-spacing-lg); +} + +legend { + font-size: var(--font-size-lg); + font-weight: 500; + margin-bottom: var(--layout-spacing-lg); +} + +/* Form element: Label */ +.form-label { + display: block; + line-height: var(--line-height); + margin-bottom: var(--unit-2); + font-weight: 500; +} + +details summary .form-label { + margin-bottom: 0; +} + +details[open] summary .form-label { + margin-bottom: var(--unit-2); +} + +/* Form element: Input */ +.form-input { + appearance: none; + background: var(--input-bg-color); + background-image: none; + border: var(--border-width) solid var(--input-border-color); + border-radius: var(--border-radius); + box-shadow: var(--input-box-shadow); + color: var(--input-text-color); + display: block; + font-size: var(--font-size); + height: var(--control-size); + line-height: var(--line-height); + max-width: 100%; + outline: none; + padding: var(--control-padding-y) var(--control-padding-x); + position: relative; + transition: background 0.2s, border 0.2s, color 0.2s; + width: 100%; + + &:focus { + outline: var(--focus-outline); + outline-offset: calc(var(--focus-outline-offset) * -1); + } + + &::placeholder { + color: var(--input-placeholder-color); + opacity: 1; + } + + /* Input sizes */ + + &.input-sm { + font-size: var(--font-size-sm); + height: var(--control-size-sm); + padding: var(--control-padding-y-sm) var(--control-padding-x-sm); + } + + &.input-lg { + font-size: var(--font-size-lg); + height: var(--control-size-lg); + padding: var(--control-padding-y-lg) var(--control-padding-x-lg); + } + + &.input-inline { + display: inline-block; + vertical-align: middle; + width: auto; + } + + /* Input types */ + + &[type="file"] { + height: auto; + } +} + +/* Form element: Textarea */ +textarea.form-input { + &, + &.input-lg, + &.input-sm { + height: auto; + } +} + +/* Form element: Input hint */ +.form-input-hint { + color: var(--input-hint-color); + font-size: var(--font-size-sm); + margin-top: var(--unit-1); + + .has-success &, + .is-success + & { + color: var(--success-color); + } + + .has-error &, + .is-error + & { + color: var(--error-color); + } +} + +/* Form element: Select */ +.form-select { + appearance: none; + background: var(--input-bg-color); + border: var(--border-width) solid var(--input-border-color); + border-radius: var(--border-radius); + box-shadow: var(--input-box-shadow); + color: var(--input-text-color); + font-size: var(--font-size); + height: var(--control-size); + line-height: var(--line-height); + outline: none; + padding: var(--control-padding-y) var(--control-padding-x); + vertical-align: middle; + width: 100%; + + &:focus { + outline: var(--focus-outline); + outline-offset: calc(var(--focus-outline-offset) * -1); + } + + /* Select sizes */ + + &.select-sm { + font-size: var(--font-size-sm); + height: var(--control-size-sm); + padding: var(--control-padding-y-sm) calc(var(--control-icon-size) + var(--control-padding-x-sm)) var(--control-padding-y-sm) var(--control-padding-x-sm); + } + + &.select-lg { + font-size: var(--font-size-lg); + height: var(--control-size-lg); + padding: var(--control-padding-y-lg) calc(var(--control-icon-size) + var(--control-padding-x-lg)) var(--control-padding-y-lg) var(--control-padding-x-lg); + } + + /* Multiple select */ + + &[size], + &[multiple] { + height: auto; + padding: var(--control-padding-y) var(--control-padding-x); + + & option { + padding: var(--unit-h) var(--unit-1); + } + } + + &:not([multiple]):not([size]) { + background: var(--input-bg-color) url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%204%205'%3E%3Cpath%20fill='%23667189'%20d='M2%200L0%202h4zm0%205L0%203h4z'/%3E%3C/svg%3E") no-repeat right .35rem center / .4rem .5rem; + padding-right: calc(var(--control-icon-size) + var(--control-padding-x)); + } +} + +/* Form element: Checkbox and Radio */ +.form-checkbox, +.form-radio, +.form-switch { + display: block; + line-height: var(--line-height); + margin: calc((var(--control-size) - var(--control-size-sm)) / 2) 0; + min-height: var(--control-size-sm); + padding: calc((var(--control-size-sm) - var(--line-height)) / 2) var(--control-padding-x) calc((var(--control-size-sm) - var(--line-height)) / 2) calc(var(--control-icon-size) + var(--control-padding-x)); + position: relative; + + input { + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + position: absolute; + width: 1px; + + &:focus-visible + .form-icon { + outline: var(--focus-outline); + outline-offset: var(--focus-outline-offset); + } + + &:checked + .form-icon { + background: var(--checkbox-checked-bg-color); + border-color: var(--checkbox-checked-bg-color); + } + } + + .form-icon { + border: var(--border-width) solid var(--checkbox-border-color); + box-shadow: var(--input-box-shadow); + cursor: pointer; + display: inline-block; + position: absolute; + transition: background .2s, border .2s, color .2s; + } + + /* Input checkbox, radio, and switch sizes */ + + &.input-sm { + font-size: var(--font-size-sm); + margin: 0; + } + + &.input-lg { + font-size: var(--font-size-lg); + margin: calc((var(--control-size-lg) - var(--control-size-sm)) / 2) 0; + } +} + +.form-checkbox, +.form-radio { + .form-icon { + background: var(--checkbox-bg-color); + height: var(--control-icon-size); + left: 0; + top: calc((var(--control-size-sm) - var(--control-icon-size)) / 2); + width: var(--control-icon-size); + } +} + +.form-checkbox { + font-weight: 500; + + .form-icon { + border-radius: var(--border-radius); + } + + input { + &:checked + .form-icon { + &::before { + background-clip: padding-box; + border: var(--border-width-lg) solid var(--checkbox-icon-color); + border-left-width: 0; + border-top-width: 0; + content: ""; + height: 9px; + left: 50%; + margin-left: -3px; + margin-top: -6px; + position: absolute; + top: 50%; + transform: rotate(45deg); + width: 6px; + } + } + + &:indeterminate + .form-icon { + background: var(--checkbox-checked-bg-color); + border-color: var(--checkbox-checked-bg-color); + + &::before { + background: var(--checkbox-icon-color); + content: ""; + height: 2px; + left: 50%; + margin-left: -5px; + margin-top: -1px; + position: absolute; + top: 50%; + width: 10px; + } + } + } +} + +.form-radio { + .form-icon { + border-radius: 50%; + } + + input { + &:checked + .form-icon { + &::before { + background: var(--checkbox-icon-color); + border-radius: 50%; + content: ""; + height: 6px; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); + width: 6px; + } + } + } +} + +/* Form element: Switch */ +.form-switch { + padding-left: calc(var(--unit-8) + var(--control-padding-x)); + + .form-icon { + background: var(--switch-bg-color); + background-clip: padding-box; + border-color: var(--switch-border-color); + border-radius: calc(var(--unit-2) + var(--border-width)); + height: calc(var(--unit-4) + var(--border-width) * 2); + left: 0; + top: calc((var(--control-size-sm) - var(--unit-4)) / 2 - var(--border-width)); + width: var(--unit-8); + + &::before { + background: var(--switch-toggle-color); + border-radius: 50%; + content: ""; + display: block; + height: var(--unit-4); + left: 0; + position: absolute; + top: 0; + transition: background .2s, border .2s, color .2s, left .2s; + width: var(--unit-4); + } + } + + input { + &:checked + .form-icon { + &::before { + left: 14px; + } + } + } +} + +/* Form Icons */ +.has-icon-left, +.has-icon-right { + position: relative; + + .form-icon { + height: var(--control-icon-size); + margin: 0 var(--control-padding-y); + position: absolute; + top: 50%; + transform: translateY(-50%); + width: var(--control-icon-size); + z-index: calc(var(--zindex-0) + 1); + } +} + +.has-icon-left { + & .form-icon { + left: var(--border-width); + } + + & .form-input { + padding-left: calc(var(--control-icon-size) + var(--control-padding-y) * 2); + } +} + +.has-icon-right { + & .form-icon { + right: var(--border-width); + } + + & .form-input { + padding-right: calc(var(--control-icon-size) + var(--control-padding-y) * 2); + } +} + + +/* Form element: Input groups */ +.input-group { + display: flex; + + .input-group-addon { + background: var(--body-color); + border: var(--border-width) solid var(--input-border-color); + border-radius: var(--border-radius); + line-height: var(--line-height); + padding: var(--control-padding-y) var(--control-padding-x); + white-space: nowrap; + + &.addon-sm { + font-size: var(--font-size-sm); + padding: var(--control-padding-y-sm) var(--control-padding-x-sm); + } + + &.addon-lg { + font-size: var(--font-size-lg); + padding: var(--control-padding-y-lg) var(--control-padding-x-lg); + } + } + + .form-input, + .form-select { + flex: 1 1 auto; + width: 1%; + } + + .input-group-btn { + z-index: var(--zindex-0); + } + + .form-input, + .form-select, + .input-group-addon, + .input-group-btn { + &:first-child:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + + &:not(:first-child):not(:last-child) { + border-radius: 0; + margin-left: calc(-1 * var(--border-width)); + } + + &:last-child:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + margin-left: calc(-1 * var(--border-width)); + } + + &:focus { + z-index: calc(var(--zindex-0) + 1); + } + } + + .form-select { + width: auto; + } + + &.input-inline { + display: inline-flex; + } +} + +/* Form validation states */ +.form-input, +.form-select { + .has-success &, + &.is-success { + background: var(--success-color-shade); + border-color: var(--success-color); + + &:focus { + outline-color: var(--success-color); + } + } + + .has-error &, + &.is-error { + background: var(--error-color-shade); + border-color: var(--error-color); + + &:focus { + outline-color: var(--error-color); + } + } +} + +/* Form disabled and readonly */ +.form-input, +.form-select { + &:disabled, + &.disabled { + background-color: var(--input-disabled-bg-color); + cursor: not-allowed; + } +} + +input { + &:disabled, + &.disabled { + & + .form-icon { + background: var(--checkbox-disabled-bg-color); + cursor: not-allowed; + } + } +} + +/* Increase input font size on small viewports to prevent zooming on focus the input */ +/* on mobile devices. 430px relates to the "normalized" iPhone 14 Pro Max */ +/* viewport size */ +@media screen and (max-width: 430px) { + .form-input { + font-size: 16px; + } +} diff --git a/bookmarks/styles/theme/menus.css b/bookmarks/styles/theme/menus.css new file mode 100644 index 00000000..61d2c96f --- /dev/null +++ b/bookmarks/styles/theme/menus.css @@ -0,0 +1,89 @@ +:root { + --menu-bg-color: var(--body-color); + --menu-border-color: var(--gray-200); + --menu-border-radius: var(--border-radius); + --menu-box-shadow: var(--box-shadow); + --menu-item-color: var(--text-color); + --menu-item-hover-color: var(--primary-text-color); + --menu-item-bg-color: transparent; + --menu-item-hover-bg-color: var(--primary-color-shade); +} + +/* Menus */ +.menu { + background: var(--menu-bg-color); + border: solid 1px var(--menu-border-color); + border-radius: var(--menu-border-radius); + box-shadow: var(--menu-box-shadow); + list-style: none; + margin: 0; + min-width: var(--control-width-xs); + transform: translateY(var(--layout-spacing-sm)); + z-index: var(--zindex-3); + + &.menu-nav { + background: transparent; + box-shadow: none; + } + + .menu-item { + margin-top: 0; + padding: 0 var(--unit-4); + position: relative; + text-decoration: none; + + &:first-of-type { + padding-top: var(--unit-2); + } + + &:last-of-type { + padding-bottom: var(--unit-2); + } + + & > a, .btn.btn-link { + border-radius: var(--menu-border-radius); + color: var(--menu-item-color); + background: var(--menu-item-bg-color); + display: block; + margin: 0 calc(-1 * var(--unit-2)); + padding: var(--unit-1) var(--unit-2); + text-decoration: none; + + &:focus, + &:hover, + &:active, + &.active { + background: var(--menu-item-hover-bg-color); + color: var(--menu-item-hover-color); + } + } + + .form-checkbox, + .form-radio, + .form-switch { + margin: var(--unit-h) 0; + } + + & + .menu-item { + margin-top: var(--unit-1); + } + } + + & .menu-badge { + align-items: center; + display: flex; + height: 100%; + position: absolute; + right: 0; + top: 0; + + .label { + margin-right: var(--unit-2); + } + } + + & .divider { + border-bottom: solid 1px var(--secondary-border-color); + margin: var(--unit-2) 0; + } +} \ No newline at end of file diff --git a/bookmarks/styles/theme/modals.css b/bookmarks/styles/theme/modals.css new file mode 100644 index 00000000..81b18e87 --- /dev/null +++ b/bookmarks/styles/theme/modals.css @@ -0,0 +1,93 @@ +/* Modals */ +:root { + --modal-overlay-bg-color: rgba(243, 244, 246, 0.6); + --modal-container-bg-color: var(--body-color); + --modal-container-border-color: var(--gray-200); + --modal-border-radius: var(--border-radius-lg); + --modal-box-shadow: var(--box-shadow-lg); +} + +.modal { + align-items: center; + bottom: 0; + display: none; + justify-content: center; + left: 0; + opacity: 0; + overflow: hidden; + padding: var(--layout-spacing); + position: fixed; + right: 0; + top: 0; + + &:target, + &.active { + display: flex; + opacity: 1; + z-index: var(--zindex-4); + + & .modal-overlay { + animation: fade-in .15s ease 1; + background: var(--modal-overlay-bg-color); + bottom: 0; + cursor: default; + display: block; + left: 0; + position: absolute; + right: 0; + top: 0; + } + + & .modal-container { + animation: fade-in .15s ease 1; + z-index: var(--zindex-0); + } + } + + &.active.closing { + & .modal-overlay, & .modal-container { + animation: fade-out .15s ease 1; + } + } +} + +.modal-container { + background: var(--modal-container-bg-color); + border: solid 1px var(--modal-container-border-color); + border-radius: var(--modal-border-radius); + box-shadow: var(--modal-box-shadow); + display: flex; + flex-direction: column; + gap: var(--unit-4); + max-height: 75vh; + max-width: var(--control-width-md); + padding: var(--unit-6); + width: 100%; + + & .modal-header { + color: var(--text-color); + + & button.close { + background: none; + border: none; + padding: 0; + line-height: 0; + cursor: pointer; + opacity: .85; + color: var(--secondary-text-color); + + &:hover { + opacity: 1; + } + } + } + + & .modal-body { + overflow-y: auto; + position: relative; + } + + & .modal-footer { + text-align: right; + } +} diff --git a/bookmarks/styles/theme/pagination.css b/bookmarks/styles/theme/pagination.css new file mode 100644 index 00000000..027ff373 --- /dev/null +++ b/bookmarks/styles/theme/pagination.css @@ -0,0 +1,61 @@ +/* Pagination */ +.pagination { + display: flex; + list-style: none; + margin: var(--unit-1) 0; + padding: var(--unit-1) 0; + + & .page-item { + margin: var(--unit-1) var(--unit-o); + + & span { + display: inline-block; + padding: var(--unit-1) var(--unit-1); + } + + & a { + border-radius: var(--border-radius); + display: inline-block; + padding: var(--unit-1) var(--unit-2); + text-decoration: none; + + &:focus, + &:hover { + color: var(--primary-text-color); + } + } + + &.disabled { + & a { + cursor: default; + opacity: .5; + pointer-events: none; + } + } + + &.active { + & a { + background: var(--primary-color); + color: var(--contrast-text-color); + } + } + + &.page-prev, + &.page-next { + flex: 1 0 50%; + } + + &.page-next { + text-align: right; + } + + & .page-item-title { + margin: 0; + } + + & .page-item-subtitle { + margin: 0; + opacity: .5; + } + } +} diff --git a/bookmarks/styles/theme/tables.css b/bookmarks/styles/theme/tables.css new file mode 100644 index 00000000..b9b2268e --- /dev/null +++ b/bookmarks/styles/theme/tables.css @@ -0,0 +1,26 @@ +/* Tables */ +.table { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + text-align: left; + + /* Scrollable tables */ + + &.table-scroll { + display: block; + overflow-x: auto; + padding-bottom: 0.75rem; + white-space: nowrap; + } + + & td, + & th { + border-bottom: var(--border-width) solid var(--border-color); + padding: var(--unit-3) var(--unit-2); + } + + & th { + border-bottom-width: var(--border-width-lg); + } +} \ No newline at end of file diff --git a/bookmarks/styles/theme/tabs.css b/bookmarks/styles/theme/tabs.css new file mode 100644 index 00000000..c3570a33 --- /dev/null +++ b/bookmarks/styles/theme/tabs.css @@ -0,0 +1,75 @@ +/* Tabs */ +:root { + --tab-color: var(--text-color); + --tab-hover-color: var(--primary-text-color); + --tab-active-color: var(--primary-text-color); + --tab-highlight-color: var(--primary-color); +} + +.tab { + align-items: center; + border-bottom: var(--border-width) solid var(--border-color); + display: flex; + flex-wrap: wrap; + list-style: none; + margin: var(--unit-1) 0 calc(var(--unit-1) - var(--border-width)) 0; + + & .tab-item { + margin-top: 0; + + & a { + border-bottom: var(--border-width-lg) solid transparent; + color: var(--tab-color); + display: block; + margin: 0 var(--unit-2) 0 0; + padding: var(--unit-2) var(--unit-1) calc(var(--unit-2) - var(--border-width-lg)) var(--unit-1); + text-decoration: none; + + &:focus, + &:hover { + color: var(--tab-hover-color); + } + } + + &.active a, + & a.active { + border-bottom-color: var(--tab-highlight-color); + color: var(--tab-active-color); + } + + &.tab-action { + flex: 1 0 auto; + text-align: right; + } + + & .btn-clear { + margin-top: calc(-1 * var(--unit-1)); + } + } + + &.tab-block { + & .tab-item { + flex: 1 0 0; + text-align: center; + + & a { + margin: 0; + } + + & .badge { + &[data-badge]::after { + position: absolute; + right: var(--unit-h); + top: var(--unit-h); + transform: translate(0, 0); + } + } + } + } + + &:not(.tab-block) { + & .badge { + padding-right: 0; + } + } +} \ No newline at end of file diff --git a/bookmarks/styles/theme/toasts.css b/bookmarks/styles/theme/toasts.css new file mode 100644 index 00000000..6a35fcf4 --- /dev/null +++ b/bookmarks/styles/theme/toasts.css @@ -0,0 +1,35 @@ +/* Toasts */ +.toast { + background: var(--gray-600); + border-radius: var(--border-radius); + color: var(--contrast-text-color); + display: block; + padding: var(--layout-spacing); + width: 100%; + + &.toast-primary { + background: var(--primary-color); + } + + &.toast-success { + background: var(--success-color); + } + + &.toast-warning { + background: var(--warning-color); + } + + &.toast-error { + background: var(--error-color); + } + + .btn-clear { + margin: var(--unit-h); + } + + p { + &:last-child { + margin-bottom: 0; + } + } +} diff --git a/bookmarks/styles/theme/typography.css b/bookmarks/styles/theme/typography.css new file mode 100644 index 00000000..46882262 --- /dev/null +++ b/bookmarks/styles/theme/typography.css @@ -0,0 +1,117 @@ +/* Typography */ +/* Headings */ +h1, +h2, +h3, +h4, +h5, +h6 { + color: inherit; + font-weight: 500; + line-height: 1.2; + margin-bottom: 0.5em; + margin-top: 0; +} +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-weight: 500; +} +h1, +.h1 { + font-size: 2rem; +} +h2, +.h2 { + font-size: 1.6rem; +} +h3, +.h3 { + font-size: 1.4rem; +} +h4, +.h4 { + font-size: 1.2rem; +} +h5, +.h5 { + font-size: 1rem; +} +h6, +.h6 { + font-size: 0.8rem; +} + +/* Paragraphs */ +p { + margin: 0 0 var(--line-height); +} + +/* Semantic text elements */ +a, +ins, +u { + text-decoration-skip-ink: auto; +} + +abbr[title] { + border-bottom: var(--border-width) dotted; + cursor: help; + text-decoration: none; +} + +/* Blockquote */ +blockquote { + border-left: var(--border-width-lg) solid var(--border-color); + margin-left: 0; + padding: var(--unit-2) var(--unit-4); + + & p:last-child { + margin-bottom: 0; + } +} + +/* Lists */ +ul, +ol { + margin: var(--unit-4) 0 var(--unit-4) var(--unit-4); + padding: 0; + + & ul, + & ol { + margin: var(--unit-4) 0 var(--unit-4) var(--unit-4); + } + + & li { + margin-top: var(--unit-2); + } +} + +ul { + list-style: disc inside; + + & ul { + list-style-type: circle; + } +} + +ol { + list-style: decimal inside; + + & ol { + list-style-type: lower-alpha; + } +} + +dl { + & dt { + font-weight: bold; + } + + & dd { + margin: var(--unit-1) 0 var(--unit-4) 0; + } +} diff --git a/bookmarks/styles/theme/utilities.css b/bookmarks/styles/theme/utilities.css new file mode 100644 index 00000000..74d4a79a --- /dev/null +++ b/bookmarks/styles/theme/utilities.css @@ -0,0 +1,296 @@ +/* Colors */ +.text-primary { + color: var(--primary-text-color); +} + +.text-secondary { + color: var(--secondary-text-color); +} + +.text-tertiary { + color: var(--tertiary-text-color); +} + +.text-success { + color: var(--success-color); +} + +.text-warning { + color: var(--warning-color); +} + +.text-error { + color: var(--error-color); +} + +.icon-color { + color: var(--icon-color); +} + +/* Display */ +.d-block { + display: block; +} + +.d-inline { + display: inline; +} + +.d-inline-block { + display: inline-block; +} + +.d-flex { + display: flex; +} + +.d-inline-flex { + display: inline-flex; +} + +.d-none, +.d-hide { + display: none !important; +} + +.d-visible { + visibility: visible; +} + +.d-invisible { + visibility: hidden; +} + +.text-hide { + background: transparent; + border: 0; + color: transparent; + font-size: 0; + line-height: 0; + text-shadow: none; +} + +.text-assistive { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +/* Loading */ +.loading { + color: transparent !important; + min-height: var(--unit-4); + pointer-events: none; + position: relative; + + &::after { + animation: loading 500ms infinite linear; + background: transparent; + border: var(--border-width-lg) solid var(--primary-color); + border-radius: 50%; + border-right-color: transparent; + border-top-color: transparent; + content: ""; + display: block; + height: var(--unit-4); + left: 50%; + margin-left: calc(-1 * var(--unit-2)); + margin-top: calc(-1 * var(--unit-2)); + opacity: 1; + padding: 0; + position: absolute; + top: 50%; + width: var(--unit-4); + z-index: var(--zindex-0); + } + + &.loading-lg { + min-height: var(--unit-10); + + &::after { + height: var(--unit-8); + margin-left: calc(-1 * var(--unit-4)); + margin-top: calc(-1 * var(--unit-4)); + width: var(--unit-8); + } + } +} + +/* Position */ +.m-0 { + margin: 0 !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.ml-0 { + margin-left: 0 !important; +} + +.mr-0 { + margin-right: 0 !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mx-0 { + margin-left: 0 !important; + margin-right: 0 !important; +} + +.my-0 { + margin-bottom: 0 !important; + margin-top: 0 !important; +} + +.m-1 { + margin: var(--unit-1) !important; +} + +.mb-1 { + margin-bottom: var(--unit-1) !important; +} + +.ml-1 { + margin-left: var(--unit-1) !important; +} + +.mr-1 { + margin-right: var(--unit-1) !important; +} + +.mt-1 { + margin-top: var(--unit-1) !important; +} + +.mx-1 { + margin-left: var(--unit-1) !important; + margin-right: var(--unit-1) !important; +} + +.my-1 { + margin-bottom: var(--unit-1) !important; + margin-top: var(--unit-1) !important; +} + +.m-2 { + margin: var(--unit-2) !important; +} + +.mb-2 { + margin-bottom: var(--unit-2) !important; +} + +.ml-2 { + margin-left: var(--unit-2) !important; +} + +.mr-2 { + margin-right: var(--unit-2) !important; +} + +.mt-2 { + margin-top: var(--unit-2) !important; +} + +.mx-2 { + margin-left: var(--unit-2) !important; + margin-right: var(--unit-2) !important; +} + +.my-2 { + margin-bottom: var(--unit-2) !important; + margin-top: var(--unit-2) !important; +} + +.m-4 { + margin: var(--unit-4) !important; +} + +.mb-4 { + margin-bottom: var(--unit-4) !important; +} + +.ml-4 { + margin-left: var(--unit-4) !important; +} + +.mr-4 { + margin-right: var(--unit-4) !important; +} + +.mt-4 { + margin-top: var(--unit-4) !important; +} + +.mx-4 { + margin-left: var(--unit-4) !important; + margin-right: var(--unit-4) !important; +} + +.my-4 { + margin-bottom: var(--unit-4) !important; + margin-top: var(--unit-4) !important; +} + +.mx-auto { + margin-left: auto; + margin-right: auto; +} + +/* Text */ +.text-normal { + font-weight: normal; +} + +.text-bold { + font-weight: bold; +} + +.text-italic { + font-style: italic; +} + +.text-large { + font-size: 1.2em; +} + +.text-small { + font-size: .9em; +} + +.text-tiny { + font-size: .8em; +} + +.text-muted { + opacity: .8; +} + +.truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +/* Flex */ +.align-baseline { + align-items: baseline; +} + +.align-center { + align-items: center; +} + +.justify-between { + justify-content: space-between; +} diff --git a/bookmarks/styles/theme/variables.css b/bookmarks/styles/theme/variables.css new file mode 100644 index 00000000..775f8e15 --- /dev/null +++ b/bookmarks/styles/theme/variables.css @@ -0,0 +1,135 @@ +:root { + /* Color palette */ + --gray-50: rgb(249, 250, 251); + --gray-100: rgb(243, 244, 246); + --gray-200: rgb(229, 231, 235); + --gray-300: rgb(209, 213, 219); + --gray-400: rgb(156, 163, 175); + --gray-500: rgb(107, 114, 128); + --gray-600: rgb(75, 85, 99); + --gray-700: rgb(55, 65, 81); + --gray-800: rgb(31, 41, 55); + --gray-900: rgb(17, 24, 39); + + --primary-color: hsl(241, 63%, 59%); + --primary-color-highlight: hsl(241, 63%, 64%); + --primary-color-shade: hsl(241, 63%, 59%, 0.075); + + --alternative-color: hsl(179, 94%, 29%); + --alternative-color-dark: hsl(179, 94%, 22%); + + --success-color: hsl(142, 76%, 36%); + --success-color-highlight: hsl(142, 76%, 40%); + --success-color-shade: hsla(142, 76%, 36%, 0.1); + + --warning-color: hsl(38, 92%, 50%); + --warning-color-highlight: hsl(38, 92%, 55%); + --warning-color-shade: hsla(38, 92%, 50%, 0.1); + + --error-color: hsl(0, 72%, 51%); + --error-color-highlight: hsl(0, 72%, 60%); + --error-color-shade: hsla(0, 72%, 51%, 0.1); + + /* Core colors */ + --text-color: var(--gray-700); + --secondary-text-color: var(--gray-500); + --tertiary-text-color: var(--gray-500); + --contrast-text-color: #fff; + --primary-text-color: hsl(241, 63%, 55%); + + --link-color: var(--primary-text-color); + --secondary-link-color: hsla(241, 63%, 54%, 0.8); + + --icon-color: var(--gray-500); + + --border-color: var(--gray-300); + --secondary-border-color: var(--gray-200); + + --body-color: #fff; + --body-color-contrast: var(--gray-100); + + /* Fonts */ + --base-font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto; + --mono-font-family: "SF Mono", "Segoe UI Mono", "Roboto Mono", Menlo, Courier, monospace; + --fallback-font-family: "Helvetica Neue", sans-serif; + --cjk-zh-hans-font-family: var(--base-font-family), "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", var(--fallback-font-family); + --cjk-zh-hant-font-family: var(--base-font-family), "PingFang TC", "Hiragino Sans CNS", "Microsoft JhengHei", var(--fallback-font-family); + --cjk-jp-font-family: var(--base-font-family), "Hiragino Sans", "Hiragino Kaku Gothic Pro", "Yu Gothic", YuGothic, Meiryo, var(--fallback-font-family); + --cjk-ko-font-family: var(--base-font-family), "Malgun Gothic", var(--fallback-font-family); + --body-font-family: var(--base-font-family), var(--fallback-font-family); + + /* Unit sizes */ + --unit-o: 0.05rem; + --unit-h: 0.1rem; + --unit-1: 0.2rem; + --unit-2: 0.4rem; + --unit-3: 0.6rem; + --unit-4: 0.8rem; + --unit-5: 1rem; + --unit-6: 1.2rem; + --unit-7: 1.4rem; + --unit-8: 1.6rem; + --unit-9: 1.8rem; + --unit-10: 2rem; + --unit-12: 2.4rem; + --unit-16: 3.2rem; + + /* Font sizes */ + --html-font-size: 20px; + --html-line-height: 1.5; + --font-size: 0.7rem; + --font-size-sm: 0.65rem; + --font-size-lg: 0.8rem; + --line-height: 1rem; + + /* Sizes */ + --layout-spacing: var(--unit-2); + --layout-spacing-sm: var(--unit-1); + --layout-spacing-lg: var(--unit-4); + --border-radius: var(--unit-1); + --border-radius-lg: var(--unit-2); + --border-width: var(--unit-o); + --border-width-lg: var(--unit-h); + --control-size: var(--unit-8); + --control-size-sm: var(--unit-6); + --control-size-lg: var(--unit-9); + --control-padding-x: var(--unit-2); + --control-padding-x-sm: calc(var(--unit-2) * 0.75); + --control-padding-x-lg: calc(var(--unit-2) * 1.5); + --control-padding-y: calc((var(--control-size) - var(--line-height)) / 2 - var(--border-width)); + --control-padding-y-sm: calc((var(--control-size-sm) - var(--line-height)) / 2 - var(--border-width)); + --control-padding-y-lg: calc((var(--control-size-lg) - var(--line-height)) / 2 - var(--border-width)); + --control-icon-size: 0.8rem; + + --control-width-xs: 180px; + --control-width-sm: 320px; + --control-width-md: 640px; + --control-width-lg: 960px; + --control-width-xl: 1280px; + + /* Responsive breakpoints */ + --size-xs: 480px; + --size-sm: 600px; + --size-md: 840px; + --size-lg: 960px; + --size-xl: 1280px; + --size-2x: 1440px; + + --responsive-breakpoint: var(--size-xs); + + /* Z-index */ + --zindex-0: 1; + --zindex-1: 100; + --zindex-2: 200; + --zindex-3: 300; + --zindex-4: 400; + + /* Focus */ + --focus-outline: 2px solid var(--primary-color); + --focus-outline-offset: 2px; + + /* Shadows */ + --box-shadow-xs: rgba(0, 0, 0, 0.05) 0px 1px 2px 0px; + --box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --box-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); +} diff --git a/bookmarks/styles/variables-dark.scss b/bookmarks/styles/variables-dark.scss deleted file mode 100644 index 17d0fed8..00000000 --- a/bookmarks/styles/variables-dark.scss +++ /dev/null @@ -1,32 +0,0 @@ -$body-bg: #161822 !default; -$bg-color: lighten($body-bg, 5%) !default; -$bg-color-light: lighten($body-bg, 5%) !default; - -$border-color: #4C4E53 !default; -$border-color-dark: $border-color !default; - -$body-font-color: #b5bec8 !default; -$light-color: #fafafa !default; - -$gray-color: #7f879b !default; -$gray-color-dark: lighten($gray-color, 20%) !default; - -$primary-color: #a8b1ff !default; -$primary-color-dark: saturate($primary-color, 5%) !default; -$secondary-color: lighten($body-bg, 10%) !default; - -$link-color: $primary-color !default; -$link-color-dark: darken($link-color, 5%) !default; -$link-color-light: $link-color !default; - -$secondary-link-color: rgba(168, 177, 255, 0.73); - -$alternative-color: #59bdb9; -$alternative-color-dark: #73f1eb; - -$code-bg-color: rgba(255, 255, 255, 0.1); -$code-shadow-color: rgba(255, 255, 255, 0.2); - -/* Dark theme specific */ -$dt-primary-input-color: #5C68E7 !default; -$dt-primary-button-color: #5761cb !default; diff --git a/bookmarks/styles/variables-light.scss b/bookmarks/styles/variables-light.scss deleted file mode 100644 index c0b42cde..00000000 --- a/bookmarks/styles/variables-light.scss +++ /dev/null @@ -1,7 +0,0 @@ -$alternative-color: #05a6a3; -$alternative-color-dark: darken($alternative-color, 5%); - -$secondary-link-color: rgba(87, 85, 217, 0.64); - -$code-bg-color: rgba(0, 0, 0, 0.05); -$code-shadow-color: rgba(0, 0, 0, 0.15); diff --git a/bookmarks/templates/bookmarks/bookmark_list.html b/bookmarks/templates/bookmarks/bookmark_list.html index d4138234..ae04219d 100644 --- a/bookmarks/templates/bookmarks/bookmark_list.html +++ b/bookmarks/templates/bookmarks/bookmark_list.html @@ -58,18 +58,18 @@ {% endif %} {% endif %} {% if bookmark_item.notes %} -