From ad7b5c0417ac26b7c8e6ca29e1229e95c2dedaf9 Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Wed, 12 Mar 2025 19:51:50 +0100 Subject: [PATCH 01/14] added html files --- Medarbetarpuls/medarbetarapp/templates/add_employee.html | 0 Medarbetarpuls/medarbetarapp/templates/analysis.html | 0 Medarbetarpuls/medarbetarapp/templates/answer_survey.html | 0 Medarbetarpuls/medarbetarapp/templates/authentication.html | 0 Medarbetarpuls/medarbetarapp/templates/create_acc.html | 1 + Medarbetarpuls/medarbetarapp/templates/create_org.html | 1 + Medarbetarpuls/medarbetarapp/templates/create_survey.html | 0 Medarbetarpuls/medarbetarapp/templates/login_admin.html | 0 Medarbetarpuls/medarbetarapp/templates/login_user.html | 0 Medarbetarpuls/medarbetarapp/templates/my_org.html | 1 + Medarbetarpuls/medarbetarapp/templates/my_results.html | 0 Medarbetarpuls/medarbetarapp/templates/my_surveys.html | 0 Medarbetarpuls/medarbetarapp/templates/publish_survey.html | 0 Medarbetarpuls/medarbetarapp/templates/settings_admin.html | 0 Medarbetarpuls/medarbetarapp/templates/settings_user.html | 0 Medarbetarpuls/medarbetarapp/templates/start_login.html | 0 Medarbetarpuls/medarbetarapp/templates/survey_result.html | 0 Medarbetarpuls/medarbetarapp/templates/survey_status.html | 0 Medarbetarpuls/medarbetarapp/templates/unanswered_surveys.html | 0 19 files changed, 3 insertions(+) create mode 100644 Medarbetarpuls/medarbetarapp/templates/add_employee.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/analysis.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/answer_survey.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/authentication.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/create_acc.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/create_org.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/create_survey.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/login_admin.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/login_user.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/my_org.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/my_results.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/my_surveys.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/publish_survey.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/settings_admin.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/settings_user.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/start_login.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/survey_result.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/survey_status.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/unanswered_surveys.html diff --git a/Medarbetarpuls/medarbetarapp/templates/add_employee.html b/Medarbetarpuls/medarbetarapp/templates/add_employee.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/analysis.html b/Medarbetarpuls/medarbetarapp/templates/analysis.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/answer_survey.html b/Medarbetarpuls/medarbetarapp/templates/answer_survey.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/authentication.html b/Medarbetarpuls/medarbetarapp/templates/authentication.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/create_acc.html b/Medarbetarpuls/medarbetarapp/templates/create_acc.html new file mode 100644 index 0000000..e66a600 --- /dev/null +++ b/Medarbetarpuls/medarbetarapp/templates/create_acc.html @@ -0,0 +1 @@ +<!-- Create account --> \ No newline at end of file diff --git a/Medarbetarpuls/medarbetarapp/templates/create_org.html b/Medarbetarpuls/medarbetarapp/templates/create_org.html new file mode 100644 index 0000000..c79e205 --- /dev/null +++ b/Medarbetarpuls/medarbetarapp/templates/create_org.html @@ -0,0 +1 @@ +<!-- Create organization --> \ No newline at end of file diff --git a/Medarbetarpuls/medarbetarapp/templates/create_survey.html b/Medarbetarpuls/medarbetarapp/templates/create_survey.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/login_admin.html b/Medarbetarpuls/medarbetarapp/templates/login_admin.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/login_user.html b/Medarbetarpuls/medarbetarapp/templates/login_user.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/my_org.html b/Medarbetarpuls/medarbetarapp/templates/my_org.html new file mode 100644 index 0000000..c40f694 --- /dev/null +++ b/Medarbetarpuls/medarbetarapp/templates/my_org.html @@ -0,0 +1 @@ +<!-- My organization --> \ No newline at end of file diff --git a/Medarbetarpuls/medarbetarapp/templates/my_results.html b/Medarbetarpuls/medarbetarapp/templates/my_results.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/my_surveys.html b/Medarbetarpuls/medarbetarapp/templates/my_surveys.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/publish_survey.html b/Medarbetarpuls/medarbetarapp/templates/publish_survey.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/settings_admin.html b/Medarbetarpuls/medarbetarapp/templates/settings_admin.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/settings_user.html b/Medarbetarpuls/medarbetarapp/templates/settings_user.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/start_login.html b/Medarbetarpuls/medarbetarapp/templates/start_login.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/survey_result.html b/Medarbetarpuls/medarbetarapp/templates/survey_result.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/survey_status.html b/Medarbetarpuls/medarbetarapp/templates/survey_status.html new file mode 100644 index 0000000..e69de29 diff --git a/Medarbetarpuls/medarbetarapp/templates/unanswered_surveys.html b/Medarbetarpuls/medarbetarapp/templates/unanswered_surveys.html new file mode 100644 index 0000000..e69de29 -- GitLab From 9fee7b65d99c1a10cc0917c3cf5406483072d067 Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Thu, 13 Mar 2025 16:45:43 +0100 Subject: [PATCH 02/14] first draft of login.html --- Medarbetarpuls/medarbetarapp/static/logo.png | Bin 0 -> 64721 bytes .../medarbetarapp/static/styles.css | 80 ++++++++++++++++++ .../medarbetarapp/templates/login.html | 33 ++++++++ .../{login_admin.html => start_admin.html} | 0 .../medarbetarapp/templates/start_login.html | 0 .../{login_user.html => start_user.html} | 0 6 files changed, 113 insertions(+) create mode 100644 Medarbetarpuls/medarbetarapp/static/logo.png create mode 100644 Medarbetarpuls/medarbetarapp/templates/login.html rename Medarbetarpuls/medarbetarapp/templates/{login_admin.html => start_admin.html} (100%) delete mode 100644 Medarbetarpuls/medarbetarapp/templates/start_login.html rename Medarbetarpuls/medarbetarapp/templates/{login_user.html => start_user.html} (100%) diff --git a/Medarbetarpuls/medarbetarapp/static/logo.png b/Medarbetarpuls/medarbetarapp/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d2930631aa2cc96f6d7c291d8dba4f8a341ffe61 GIT binary patch literal 64721 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	VxKd5Bgj}Pnq9=fdi_1(3abB{WoKJr%mIyv<P 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∨mXH%HCJ6K@r?wR=guYdWy04zd9vmia+pr^`}%xc^qeOPKi4F#e7(nZ+Jw8E z1`+>m1f6_z<GK8*W6Y|V>K=z?@*Y32g=u&5hwF?&ovibDX8kUyyJ>G9dU@Hb8)|z@ z@4Nhdo1D4j%q90J&%fUn=H<V8O*}vTMXK|G_FopYD^@4D%z1Hu{T~0e#F(d%>IZ&5 zXk57I^P%0hZrzSL(5|Or`>$7gmA>YmJ=ZM$*Us|W8}r@GhC{+b#&=_6)uhPdr`%VH zop(y-T3F`LfBKb@PjwK}97RUC#97K>(UXi6`Y!&u?7ONUB+tU~*Xs8he|tO6|If*n zFyon~Pomfo?%-FVR=MUT#=FuoEq^^<esqcF>;;onK3bfeeX)5{0z;nNewkX2^m<>H z0=3Lltfm)c=5Nmx{FNm0nyqfF4fmUEEuB;QzS-_K)w#PUZAQ7%&21C%r-pb}1=lvI z*)Gm%2y)W6wSW7!OYM4VZ0w}g^vq*={q=m?6|Rt!X<EHs7#CC=TYrdgpVBYoKUd}? zUy?MbtkYh5fwN{|t$<y9!~eee(tS}?pHzSLT1<L=ZfCXf(eToepLUW<J_jD1Q_z;d zw0E^}XukB>M@O#AKF2-z)zfY-LB1(E{YDa6C5g8!svlGyH;-H4dL!A-rGYb`c=g|m zSrbmZPxW=NDTz+6IJ+=K(Nz0<iS8X`1}F75!UsyOil26P|1v6_YvIj`c@^<tJMXr% zuH51L?vmkDcCDqmo?OUrNNqUR%a^8LkoqK5y8Kx6tcgX=S*%_$+TW|@%&?Sf3~S`J zvN;=(<Y#y%Y1>}A)t~p2DX^wBJYU`uSf1jx(_QIBsqfDi_Orh;nBOu=Sp+g%-ZOv4 zE*bfI;_lmHFJAt8rh3a(@u<yAk9JR;IpuU^`ucY#jwMGo?v+@uD!BSz%<|j0rXTkl zuu$22cT)BCpXyP&(&JW}Wvtlx?!iN!xr^D~ObZn;Io$bp#X^Q9xA)96wc)=fzFh8S z>6OP{rafJ{ot^Dfz0{}4-k}$oEsnS^_MWf3nfnT>$IeRjO@_8H#-6%jvt~32JmER! z=G<hk?C|}_){wC7ca;lQtv!GEu#d^56T*}I4rR#P6n=0nGP#dk{ZQDl?v`IKwNG8N zTwbZYS^8MsCjGkgw<JvF?JB&^>~~6i)pmnlv+dJo7+ybf%r$Jq)6iu<=1ood)S|fY z-N}o0AKe$bFKuw^Yd+V~U7L@w7zn2?c0M6;=Fh#Z=Ldg3l2P7owYJ}8d6CSVuz$T( zYvpp}nAy5n8}vD<gbsaJf8f39W=nTdX^EN&!Q|=>DJ-|%a>v=2&saC_=G&(4I?Ha< z24#INtja64R<h}T7$D9j!g6Hq^@rcOPcL&@uy2dclY|LryFAvtpOwGXJ85&ie_o22 z$n=W`Jh|jwys=Z5dgN#9l&OE)7E8aX&H6j*LAFcnnj?k3A}&3xbotqz_u2i+x6oNf z4<v75P}}VwUsb`M)z0{n@u<<kN}k8OoaQVatSaI(_RTKfeR}b*?DOet?`jr)JL|Rd z)5NUMBscC02W}?quwLTFaO3hh&%H9)XZiXwlhlk$H|ZaL^TVMt_*i(yqm{f{Uz}29 z<XI-{za-s|`3A?@q=Vhhzi>1-TG;Klesm^hv%#Dhr`9acNS9e38oc!PGcV7|UDHbs zhP-lFdt{zctfkAb_i;=)GW9=?bs2iebpJVhxpeL?owfzPqHkZdDVuJ)Z=YQ3&WJ|K z4}VKfGI44!PMH%a;`42lYJ|lR_vJ?>3ct^?UE6KSA5vkxJEu$4|I_2m%vDC8UK;&( z@odv)$<RpQI+mof%I6qY`=mn^6Z0gEYp&c-7C5xFV$QMnzq8BNXgtkmw@%JFGiOan z!H4Z{Y`z`XeIw%7yfP`42TRoU9dG8Y<?6BIb~y5SQ-p<qWa-W<=?Ah0Y&nf&g}NR3 zj6WFvUlP=OGs^9f`r=~}Q|cZI39B6qREl;D(B2yQ%W<XZzi+><zIZRc-tGJA%DE+v zJud8J;NkIeN)`CC`*mvT0yAs73}N}{d*(WAY25aK(frQKL$Z4|`u-5h6}0m__r96! z&EAF<z1I(%TXz4gbP)e}uzlZEwn8)Qh23+6)j4xr{)#1S<IvH$GMSJ4arM#Q0$YXb zQ0Ch&6rz0UwwcPvv9HhWmPl;4{GDSnuloM4pI&P7%dWU*EOY6P3-dXPNO5UFL+6Ck z`tGY1Yd=i6Z{wdd#q8#rBFEOhsumk(>v@zj$j^$_TQNgfJnZIAjo9rqJ63x<^Vv4_ zWtB|o2iNC6`d{u!mTl^Kc5iyt#dz=gmHXd>%nWO_D+`;bT#>jyC&b$F?ZId-33&lF zPmYKPS&6KB6WRFgO+FN^k+0vnIp|;Cty3?>XPo&de|(RHxPi%&2TI#*Po?{Wf4?X; zG5TL%-;py{-ezoGb!cMGa_@}9m<REVA2&zZ6)hA!*09=c^Cuy;{^skgk9PCQPxd+( zA0)ft|GzJff9HiQwOR49Z%VfNhmMn%5=wTSes+u}p|j_vIEP@xtCPR18U<7&{urJ) zXQ-N8_0Z+V!nTWM{{;-W-joNGFR`|Xb>w-lhI7*WI}$d%nTwbb{KV$k9Ny!T>*&O| z`s<R19luKRL(ZyXAAR}s#UbO#u4^oA3hocGwL9YT{l|v_Cc!3)XGy*tnJXjrPiQ`? ztGwdLoXDROYf@D%f8G#iZ0B=r-t@k@e51&(X%W*4J%3%2nq2p8Q>jSe(HBg*ADZt^ zW{ohZ&01Wu@ZvTehWY6yY?oK86T6b~SpU|C#|J#lNu88gY3JOXdbxk4OZzvzzjbaG zmHC=Nj`M7fz4ZUafrAS}Q>Q3N9+>_$B)6r&>63Ctptym7!QlgX=N?CQHwdnuqWJkq z<1<Zzw@ne7IF|L^)XJ57_NelNPQ%MXa}G|L^Z8971B3M;PZ!4!@3nDidy{qrUW&Z+ z!>_#Y|M4Zvf8+Z@7Vi$fmcqL*G|n@^U22=>|F$VkbNB8mXpOuz)nl%6!JcJ}#wOmI zOgQ5X+?+oD%)cM)rz|f$>|eLmegDt(S6}@9b8ABGg#&JL`*};3$G=&Z9(J`f`vP0C z%m3T<hZ@-e_+I|y*A+22^!_B%+?;QbmlMjhH>+>2N!rMhu%^H!qT}YF%MWrt?65d~ zW8Gt=he54XJO3Tdy1tn=HPCx+!m1fDZ?1&-btH5j`MKHea&5V8l-2SaG49>pPrGeb zo&W!iuG)bqGY+$;Gv81Ma?V(9`+Ae3*(p&AKdC7P3Lky{8<n!E!6m8Wv*VVWygA~Y zg0*^=b0xG|+=7yK-T6BC`VaPVOXI|Z3K~zm<T&2ZId>83*~m||jknr0CD;3Od0jWC z+g8*mt7qQVvA)npXwnP6M+RlG*Hji}lt#Y)P<60`f2Ev^z)j9++0%}^GO1Xxx?z*l zHqYFjhx5Z0uby`56!S$j)_d=kS*d<(Q8YY%wJfpZw1@p;&gd_JKOg^IbusMhrvUNF zpI0<(g+K0lboa{1Dzlfy5}&hPK6*dZPj10oHm>a@e?FuiUFi4epSruU?MpR_3)@T& zxxU`;F|F}>YVjAt;Q5P=xxD?*CiXG#p~LwLcXH<RRJTpDmfsV#_upaNgNy%J<~=ES z{qyhn`+tM}vQ|3A2bOpFg?8(61nKdJ-_T#ykgIo$clo>k@sF9`+e6rHT$I%BoNT(z zXX8d!+s{wD1a|fw5q@y+{BCo$#lMVN>jJG8%9NW;5z>0_Oyg@h$I-CailS~a^Tg){ zZu|T=!|vsd53K3Gwq)%VJCkx<XN!BuuA}NdJ-j6MFdvH&U-xpl?5xHOFPpYZixaQD z*1G13VXS^##4eRP^GZG2HBWt-dL;1D&zp&EkxNRKb-%k6)^~CWbGW{?>v`_-DGz<N zFPii%>(`I9;>m6~KSCt`@x@(<(*HfTW%bXnYs=TIa0%C0v^BZ?{L2^L-mmX}IlK7Z zitcj8+%`6&nd=_e=t?HYo!@h8nZ#Dzm0~~N-h9vX-Qe9nC5g&e+m78^wK)2au=LB7 z1`03c>bw+7xGcJdwJrNl^M_isX`GA?T-a4B8SjaC7(GfTz5Am<D_q{j<iqOYa`JjY zClAhbYGC5&pK13np=G^Ux7xOTy8zXFUTa+Z#5Oc8I3{8F;?P~TPC1@#F#{RD-L}29 zpOw$$h6}ng+sHOgmaW%Os{M6WG<xU!^N*$!+)Sx+^9+l7<(J8|dDEnddA$)|9b}~| zzntNJ#F*WFU({nqtLo2Jk9y|q4{Tc=9HsJk_I=lN=MH?dobJV*d->23p7q_2FWy_a z=+mpzeC7TB1iF4|Bt86iKs)nH**gDht{SKR-(r)ty-t$8SR(6jx;k;ij7=L=OXt61 zFHN6zD2FxUfyP%Kx%H8cEk&Qni#}r5z4Y<p2b|S+b+ct!IA3q?2}^L>`C`hAnYQjr zl<z(YmfXcY<L22TO<MnMmbFelc=<tY?!?7B4mTvtf1FS?ez*Jg(Ob@1A9k&ATKSc! zHqhcd&q;1Jsn^`EFWzo{v{Kt_vCfMW&z%CYX};ZlC(Q%SRh8?vZk&0rdZwA7f`ZhC z$K|iMCpVaJ7<(*Lz3}O#?LWs~HV#^Lv6oZ+@##%&=GVQlW-8agy;_pW8CvEm`w#gP zg*=RlUp@O!tXB3GN6v^no3^Q>M$U~o)$w`dd|}V)r<cYWob!(p(_i*%tGev>lc!JJ zIvUY^gYT^SG1b_34{z^2-a9KB!sfjG+G`*;Vb=e^Uk{3(pUh%epQ6lS6Zm&p$<{5L z-GcJFJZ9M}ez$Pn3fFb9VSVQ&MR^3@I2L{4yY>AQx7be<rfj`%bn?Vm2Iob$+v+X) zxW?nO|Au)BS9kJ!=s$kFFe5<X!tG77MP)YK>^i#De5<=onDCKHx+QNavUOiRX#C~; zVav4-8~;43eayAB`RaX}XBJPI4bJ%ejJUBRG-^WIUR94LH5KIvlR}w%9^X8B=ne~; zil59ji;V^X47*>?oNx0vo#kQTyte9Bl1+)sp7-PmR5O__#ckXnQ|qO!T=VIYSIM=N z8|UiB*Q+0J+k0Z>m4kAXI}f}*w%0Ou_mXT$P*5G8r1$ZQeeM6?>(dsOpDapR@<DQL z_p!z)JUX`$u7(`l5uJJR_s_d4*8lCeY<8$(<ML3)9iN=7WHl9h4&*SNN{e4=cx#CQ zOW$g->5J@to7Y~<e{p8(>*<Tlr=8u}!uQ|WdGo~Y^He>(|6U4tzr<(8y1#*GuZv|w z+CR@RY5X2%!1d=-S6pLh{*^_IbJnw!<e2^2rF_6K`u3Ipw#}>sXHTr##G+c5@QRDS zdHT|(V^1gA$&~N-+`6#+>8<a#q~=d!SaV0JzEYuSXOe@(pQkcfGE<CM4{IG{cgPl0 z`26Rxw~?;&&jmTUuQUFpt=bXvN^qI00Q2IL>@1~Ob$wswmWVx6d4Aqu=JU*kMf=YN zAFued$GRf5Tj#jf;|t8pg*ndrFY*K4FPs;rUv0mC?|~;bw|2Gcw!3v{Ma~Rf$yuiY z1djCo`)Bi2vxlwrZ$ty@wX0Sq%cuS;<J|uyZ;RE601cs){ni&k#9M=1dmhcrtd`>2 z{>MJ=l(>q=?6&y-Sy$5vJU8oheSat|_4VfY`1p&zT&>)H{FK(eviSXrCrM(RdvvEf zJ^yWi_(wf?a~tN~`&<WXg#U}|J0P`uM#S~nMHhd^_mzjHU6q+*&~5GfY}uE;#<NZ? zTo<`FR^IlaSWYKv^_Lfs4XI5>_PggrU;I9A&5w;OmGgU+_H5fzZXX^W@M`sXd8svD zC0VyDX<)GE&N_U~qRDHHef)_FhgH+3<#v7TQi;1{v2lw?V#n^6cf8)s{J6HV>pm;n zu7d}*$E|Vwo|Vi|lF8#ME*583?fsqSd;k0Ot}^%gb}5{_k~qU-lYQM)iTzr4O;RQ; zt9)_wA%A3;@WG#|LJkS*bhd1+Oq)7G*GJsKbJAO<NWGL(&97eD%{>+^ucf>1>7h%{ zERO$(<@a7694PDf@vYsoJ;n@7E_2+Kniou*W0t|ld%%RtDPHfTsds;NXG!A4cH1wk zA`%k$JP*vL^Y8r|xMSYNt8c{WHZ08hHt&M@mN!n!CcjU5pJv_sR&1i=OS98=`b`x+ z%wj!rDZ-_7{f3!Y)6=YHG;d_cT+mS&<$fw<n-|0RrgB-nw9~)&xeqUWU>p6d#_L|` z7hC?rLA9v|cvv!n!xdRKZ>*hl>0r+1KROeh>ss#RoGT+(mn|5apwPp(Y(aFY_G@Nl zD`$rTVSA(<W+lBg2{UKg_4!4ZxcU6|f}S;nuceqhR`{Q`FPW#%_S!XubwZkQbVcYd zwX;k1${YHg4c>cj^Mlyf@T?Zj-HR6qig|sK-}`jR_Ux^{<e&UJeN^_APETLru2aoj zjlZ*GTwmKCdoI!5-f+r(t!}LjlSn{9f{np}tZkn5N-i0K4p~;h^$M{JyT8sjmGsT6 zPXDpc%(b;XdYar4wrmB*=C?bho$7w_>1x`UD2>JUZv-w&U{<>$^Y^LNylb-#tbP#r zVcoSIAAija|8KZI`TxC7@?on@@8qX2@gDy$V?BR^$bpyp3<Az%a@hUe@<(e?NJWzE zbtW#J9$DranMs_<Dl56m*>tWM&t<Sa-+p~Vw81<ptIMkQ{Y9*9`@J~bdt7Epv!b&D z&nlLhd;{-9W>M+Y57ZgtFaG?M(KbUj^Finboq7D?Pl`7i?)%!e+M7MgdF$=d85@}! zUi6zA3LO0W+DTwrr%YkbWX^qFJ3=3?p32J8Y`%5YIlW0BH;6Jzt4RKwB7CdqO<MLr z9`i|aAIMoQbX?WsJz0F!`mPQ2pJr{EIj!_m{E_rz2F5q4x^*8F&oEW6KcDi`vU7F( zb$9<v^S52Ob50)ik(zx+;K1Ssp&!-+%=*Z|Uwr7JMr^80Y2y7_rG4VgKH^Po@0(&Z z&R=+a>-yul>93EL7z!S$cUqU_s9%w1Tvt4GX9E*+@&N{E^@M45uNSS@Y%TNASxVw9 z|B`!$`eyt&R}v|hE*`_U_%OqnFAJ|;ZHrP^E%K`?dB%>#^~bjq?oQLX!+2`O{LKMu z`9asjABGn89WJ+h!}Gn|Yw4}VMrZk?_#(Lt4Q^cjHUu7>CbT|jS+MY-X&Dy}&Dp@h z<!JTq-!G?`(hmNDcUajz+-SYK?()LPZ(6xIPO@*Ckz}8zS^BWA>*1_a#*I4rcPN=1 zWSDp0!)~Ehj3KOZ`rEY_Ym$#1$dS0KYjbeM+O!L2rZ_X?H@P2N?UZ>;`_BgB7_DC) zz58xPtiJYd&H3k9l3UYvHFUd8U@bB~<-@bGQB%(2aI)yJN0kS}Lbt63Z6`C4h**EH z_oWyM$I_3-nIhD8J&xti3T{gE`1J9N!v6z1rvx3yFldl}Grc6sQ;w~FwxGPCs+izj z9d_RumFs&K%6qD%ovYAnX-{Fa;k?Jvf2vFV{RZVj1uMT48lT=Dw)&dti*`nP?%ua6 zog{A8DgFq(#lpB@dhM(*6{a1=DTf!7Khd~;IA1?$nH5{yy>+p9Nt4XNN)tcGDWBw2 zSFdcCJVicd!o7gb6V7%2&dr?uzDINYnU!+KbH2^IeyA$?Lvumfd(MJ$J~NIQ*);CV zn)u`B=EG;Mof7bGGMCk?kvD9sKK$sCV{N@%)XAIMIh(}1{ygW~ApX}^aYC}2gGMmR zwtA;CiVA0iFD?DKZc@N5r9B56q?kP%X5UL{IR1sT*Regv^4a3~>_0N?R8G#Y$&r56 zxc1=mtm`R^%EuWrYAQ<i^jc1_PFuF|{?yt}{Cge!X8ic@FkOPpr+%KDw(5aY5f=R> z^@FpG7V&#u5M0`EJ8X*Flpp^J;xl#z`W^}7c+TBeGDE%Zl%t&6nHjwY*WVOKTz$|| zqq2mz_%IU}Pf0tYik6w~0TaoMcP{elO^jXM`c$M@Kd!iFUCWZzmqGU|i#S3KoG|>* z_2z@+Ny%d~S)JDEZb_cXz+4?#H}4_$`gan3XCJBBMa5J|_jS&H;P^qQA}IUL!#}ky zl6t(Bd1+780-x%Y=UlpFAy6`FpU=7{Y&)}4wlaJ!mE~Q<`o*ZSp_!X!DYu5f1zxrv zE1au&ilm=cJ@`K9W<Y|SO}p|3w|y46XQsV<&Dz7mEVK1Xm(PJu49~hAYgMK3#vNAa zNX$QdH}U7ne^=_v?<vcr>{(&^YeSn%VOw?ck?#wgoA=kf`Doc?$PpXH?e}U0dyaF9 zK-Us(ooP=Ph4~l@Uldy!Eo)$6zMHVXQB(8T&6B&*=Dy%wpT*}l$^6xfZ%l4&jAwSt zn>1lc^0s{WgPZ-PHft-+a{Xj}R`kFIt;T*8xf=<m6dS%DXnx?j(4<}4W_eWm>#2by zw~t=7voBasRen!8!p7S6W?TE04WX-8H?P0kBympr!s@yG{^t{;^0oPvJbrdjHfOu4 z1``*LibTV)I~~VnEYqvyidik|SNUP@){__Qyi$Vne!7%<KMmN^@XoNIOF%!N^6|__ z4)q#&{jJKg72~F;@H{^Haq8=v{ukIpOSV@syl-TGy3{hJP^ot@bMwW6^QT<0@;Iv? z&hM)r&am)xON79lsLLIWnkP5xef;CGO|4$a{{=kD`FYslQ=f`YU)js}f@}XC1K$Se zYn=KXu>y-^GD_BFTwJ1=s?fjk$dhhS*(Aoh$q%ZtS6@u<QoS%sIA-yphb|In>sJf! z)qUkQXEXDX$Q73pKK)>{VZSH*+~U*q#m5Tr;|u@vWvnQvo|mh~5p$-ELnHEl){`j1 zST}}qOF8H3Kboif)H3t)gN<81b_!KycI{Z%&6x4>PNh|(<D|)#rBl9d6T7re`TmZ` z10~nWjU_u@HI*{CKfUpOjgM=DG~0%`_m@Vle!N$=k?F^exw@fDhh<C^yR$4#9&h4| zG5$CG?A13+xA!netQS0Qcu&})ct>-;)ZwLxpDZhv=M?Xsl)m-Ab)IOe=nDb!$_+$? z7cRc;T7N9-gV0=&i=K-TSfx(4`t|%QP~M}lzud4PxnOcwsH^;+7sBtWcgockr@pDx ziv9gN@yH^3|I-KT-GV-)a&wo>J{ElMvsA8GqRjKP#|^%npDL`q;Z&xI#j=CXzHM#0 zeRP+sUw3P8M$Pds&adka6n}bEyyJ17Rcgl34JGHjx1PPa@Yl<Q$AV6-y|t=6S-N93 zUxMf-i<gztJ;K}md#iBwUE)xjv#E2o{@-(|+{Jdy3%x`h1~V~#Ke1QIedg~21yxPY zmUaHroBEY8o7*}?{@pt!QPI`1Uk+R}wJ*(ejK3>zTKbmfF-4|-2Tz@1{x>nlf69K* zH3IXlN~r(sj&2KOpTl3V?MLJH&@juX`z~FZeO_B%;=FLh=6jbl->mT35yHp9!xL(6 z_IQTDM5hZHhx)y3%s!gNtbbeGvUx@0m#)6=Iy1Wr44fR?A3An0YjbNDOlW0X!yRE> z(DwQa!>nY<grzxo?<+UT*{+Tacv0&)<Ib7gcb9Va|C(?rE9`vh+exX%zgrnZzgb}E z&6mb)d{jqd&ibi)b(y9e7J8Zcd4}#DR=MIWGj+ed<$U$yMC)Za`yKT!wtouYRw!8+ z!fp4pVdK6{vTd^Yf3Kd;m^S5=jLXd9elwN!t@wNM4WHJ60}k438$y2k{Qhdqo-2!{ z8^=m$TRE9oE-7DPS$<65{~}|LPzO1-8&$toTnl;AEb4LMg^g#Pp?G$n%z>v$LVDIG zbDF!FJex1C-m~`l2ayVHn`2y7r>4(K*zw@O%JpCWHf~9|zy84qBL;zgkt<g=SF%sq z&uZ|$$?t&ceC~^z4V%t!FgA0!{(XIkRWu-BfhhBwXTRk0*4$XN<NS<EKG&B<?fbTY z`QL)Q=Q{$$C-gIZ`1wFv^P|axJ@I!cc3v@l@YR&lJwN+x8>`Wqk1x4TCAw>Eo;aa| zTfcGnfoP`nmX8iz@H&6sy8O!XZ|qm@E6dnm<^HHXZ7)Y!sZgusC9TVReG$iRNbcXY zLi9yLsFCzTj-u%uo4FQWUKbZ-CR-3zBWSkOup#tJa`x+IoIK)<H7gc+{d2K$tF|~f zzdXtI*Y@zQGq>+v*}L)2wPeOm4KsA3zif6dpEJL(_F+@emG!@+tvHH$ue9k*T02dv z@#Fa)$6Rt&t`U;>A9*0pC{lHg;f~c?zI@B}zO>^z+mo%oS6un9PMmH1yZP6?zc_I4 zL->T1C$cByYz$k#Si+#DxJDp(xq1AtiyiOId){yRn;WP6vnfv9SZ<j<tBAyjLkwTO ze#tI<De(HDpCJR=&L)!=OPwaHzjInlbj#${?IjYA-zXYJZ@W|8#Qkh~X;ZUG)Xcht z|C&$k+haP<b%J>Jl48Hp`l+{iyi6<%O3tp;{<VMl{7)y2eN$O_=jWXZ{^7s0=C5C7 z`dGJOp>SC4<jROoTV0}T^W)YeA1+GllhBxZ#>=R1?t`|?+D8pF=1vGXA}%4J%4V?e z_I=ME7u$R8E?&VoBX)=W6!FAuohqk~zyI@7>bXY<qrm%)Bi41#wsHU7C*V<ZrKxyT z?Uh#|jT*Ayf3{{mYtq~;r|>VQ_Gyi^+A8K{G6vVb&T1-nV>P#^ahcjqrM#d&%(r^m z=B;R8VrFGK#?Rby{QVlC&9W!vXHM$tRnIy5bf&4~F_UW^=W<qxPSRb~CUC&`f$ZKB zIV+3(t~&c#89kJb3jCL`H7Z{6($gy40M#8c{M^@iezB3UYM<{T@oD#$t6xm!t$(|2 z&wbI$smHy+hjR4DG8>#~kMBLMXnaY)AWwXrPIUCk)RUhl{h2SYE%3ET^_Bp(54ZU= zCfo|>pUJSkA^m{0k?<FXg!4u*1;Mg9wE=%c4y|9vuUIitNBo5VL#xdsy|SJ9p3mFD znC5fKY?lk#aNIJv^^bD4%1gDmZyp}q3pzh!V)6q=OTqeR>%&%tw|_>J&s=_1#X#Aw zJdvkZ?WW(_i$4~bm;I1Ac=U`J%LlFsH;sMbhpJ~iyjK>O+3h2!H}hKj#YM?x%Q%nr zuzOBdDbZ^WST{MC+iunQ>?|f@JI5-;FU~JYKR4LS5t>!DbNcjs9onEnL?oF#R({_X z^46=j;rn{yFYFKgX73MaG`RKF=zr5qqh%ZI4so4qUG;4HL^rwHN0hUkemZ*0I7;}- zh4=H)c073L{CxU6TZ@ptH($!=i85HFE-SIGVSOpGi(hl9CTHP`<_{VzM)PcMa=qg4 zY29{8vIrcwCH;(Np1-T#x%s8|W0C60HC+;^6|u?A%v!d`bdzV8^kmyK81^|c<TtqA z`L^y-@j{cmLiaxNh`ZdabG-k2b$eF*mFLGDQWE<4EPXEv^(<uE*H@!?^Hg_K<9hYl zws|WqizR$Y=Kj(Ab!$fPqYra7FoDik;Ye<fP2pd+>Q>>?harZ_wxMUPl}}t-zd3E& zR~cje&8cq~&%}J3DKsg^li9z){DAV0yRQ$lryM#Edp`WXU)M+f>qS#Gt`ITnKDo*A zkTkn+o8)F);pQv`PKl>`%JVol4KmC2%uznM1Dr-T88)Q+T2XVWY?j?2n~OJhNj3WN zu6S?oK4x$2j+|q!b}rB4`K=(=mt`|`Yk+d;q5Jo%9G|*NH`@L)Sh(ZFKhdZ1`coIH z|GF!t!@SdD*P66>D^_;YOK$gI?DymFyuOXWdvC)}&NK~!D>e)E$6tJOyZ9DY4EXe! zw-Pt@tiJbg3tN$)-1C!?yj9T&f6vV_jIQBYKh4+nK*f<a+@IImq;c~%h#wHvdCao& zNsWEgcGmL!A<?S#yV6hJ(~Iy_3Ey*2`Q#-JvD0E6$4`6CyZrRpMW3T08{Oldg>NyM zb$#camR1Itx$!$Ao@@H9I3FV5>gv+iXqcSPyX}JVktZh{zVWqb&D$^b`be&u?sMKp z*TvdREEaxxsj=<z^K+-ux2eA5K0Wo4_Vzj9cIjt$Ee^5zcw7s-_xIe@RXd(sGdQ5| zQKhAn=|EY+=as8tua<1`Uh|?Pao>{j%roBj`PRO>+QjgaTf@NMs^NztZBbt~U31%& zxQ+X0hPdjPZ=sd{s$%yQ6xx05^0AnEv&rAgxKyZ4;`fJ!&W`__nh%>^?4Gw?Uo-rb zzUQU6az>KMvU888ag@JIyDa6o%VMHhUh529mcv`x&I)-Pnmd8%^WLIBORLDf^I-c7 z8nWJPEd8jaxP3D3!-kLBLez84UppgIQQAJoOLoQWisYDI35(|xtK3}V=fHH1$;`}S zlWoZAY3Fu-ZMw8;jmcg)vxSz&uFqekKih2azn-$`GV_m@Bu>a_d+;T0hK|qFR+BR) zUSz1m@F*C_RtIut)>K+6vUN(NUtZV$>T93gt8mcpM#F<o8_d{wGp8MoIK?dS{F9|c zTi4lL6LP+1{I*G5bJWl7<oP$kX|tEFYQ7n!wRA5tySMoLy39=9d)3vJ>zGef?R-^u zci+D+2U0ID`)+S|B;B0-MrGUbiW(gTopp{JH-3Edj8%NiTDEp!<biO#bx*7q<KG)^ zWhl5fQwwwi%VZhm+uyF74KeCBwBj;QiBeo2Kcnnm%Dm|chb>zSV){(W(@x7S51xDK z$iyE979KpEzdz;H<bQpg74tvvh%dSS_0EIpU(3JSniOcv_r7$4chl#?EvzTSmSxwO zE`8lvIdARfRcW%TKVNjwSzq?he|q_3e)HOJ{fSd#?#*_*#Kgtp6TxG%Sh>~gq?+tO zRep)!6)$dFJz3$vmvrsKj4J2X>Nk$wz7edbGa<3}K<v$?2IpA^ot>}WtxEiV_@Ilh zN>Y$POhN5)?$V#P*Vpe3TmAid@vi=t+&<U8XC5|4&q_QyS5klK*|#z;(-gZ*t$e2h zD^{Fi?r2qsFi1EV;LzB3vWd~m*k&EC!w;7iCVUd!$9=UsZ@yCD;bs0*#3$)fG5d_s z_O6>sCqGGhD@H4vb`*J@IpwsfubH>`-EE7$B=}w86gFMC<8Z7$|GkKL_sa9<$;Vc; zt^Xocx^F%c&ta3>_P)6lX}cA7MNatKW)`sK@;2xBOqv=THD{;4ZVBXA*TBRqEX&Lx z-M{wr9?KKAD<`G3pEmJc<2~!HdU=n2Zud+RrgM33e|<4z+3dQh_2V<fy4>vcHoJn? zs(-&fT{_#NaB`pVpVyz8ub-cB@B4#=bA**&C|J$En=$)d*K&)NkF4q1io5PaUV8tl z(6(abcYV{BpBmQN*h#O84bu$asqD~tR3*jipSQ;K_7m?TGgIPHFJ9NXlGvYf-L=W} z`f0_r9A;^XOFl9$ZajF-My+ewnRD8@eY4jIOY_M|RlRT5fAK%>`4wSx)`}S=1=o$6 z!>2C~eK-B&jUJoVtP(n_SkJi^A9}RUgFDmWti!|lZ7N~gB#*J(GX3oGEc3I#@#C{| zkEEaawgD6btjswqRj;<LiWDjdQoNvc?2u8U(j1-sxJSFUElk`kq4(wdG39eg%Dhb{ zG*2p-o>%nn+0S>4ZPokzUmxAGl2Z?PKC#6=DzD)Asb8&6gZ^&372tdSih%=<#n}c6 z83m3R>t=6`Il$B~W4+yti(0v#?<!j#%A29b&04(l^4=J;-E(^m|Gj&3?|}ms4=`L( zuj7q)kR-TT_<*tJ@t?^YDjqw}FwNxUJC%|ny8F1$f*ii8qtA1f^SV9V_o*>zZ^>1c z4}YG%l|ET}$tY$*!E@uUPpAI-)m>C}dH!;JCe9lVirl1F7>!kJdCE5~vwx8$e!g$H zk3n+T$u**dW!^J9xWrGFyeY}e)md=BVSQr5<NOO(A9Zh&c5E^<isnA;U0SB_lE3TZ zqh9`uxrRn@ImeeDnRmx<MbVR<v;e*%=l8#TbZPb8w#6S;onP{t0W=UU@b&6`{h(R* zGYxqkJ>XHzDNUU8$BvJiZDwzyhK|6rj*p+3eMMG3ZDy>#o7W+dDc)9nQL^>tjS9j1 zz;ibYKXfg*bk(SlWx+>3hRZQa3=3u*W7;WT_o4fM!~t*lW$`_-kA9WJui1E5;#BfB zoj%Q@(=t|kc^9pxllv~Dy;J5sZ=ZV6?=|nr@Be-ECF9{HbywE+tHO>d7Bd_=Xi&YK zXN#<5%T2>KQL%F`_OCuRX(b0oeWdor{PLAa4IGMlPH%DMUGMose*q{W4p<v~{&n!z zu1MjM#j9J(0=ws`^H<9x^2zR3+Z`iwL14RI6W1#ik6V}Ltz~`TCoQEVDjL-l<|chT zrtGxtY1LOgc{7Zh|9Qu+3h%RB{?E5kYS+eVoiA6NKilLOpQG;9!SSEFc&n<!=IKvQ zs&NW*yu2Zm8~w&5#?MPYJN|EW%1MTgVgU&cJdz%0Mk?e?WNo@!w!D0^=)Ws7Cxtx~ zX1wLPw1KO!H6<tade==OX_g(21-L?E)HS+qo_c)0_ILPHyNctoOKUt=1Sbls)SWVj zdEajxzoM@0*OpKI@-_;^ujX8H?%DP{`UuNJMmL|R-q<y)rcE~#8uO+nS-AJ^ePnU) zW!r?4{`*{)Pf;~Zc(7KURYby~N221bZsqq|QT;b2+!XEY@>uA-Mj);8-NNt?ju|zE zWfm_4?Jx7aV={gJ$MBNTyfm5MPCni%`wDJ%ojPCfZ)E{{doW+h>fgIB|N8xJz2lxM zPZ(T|zS8c?zrlVkUqZDn?}Bfk)P}b+X0Fbhc7<2qW0jyX+vB@TK66&yI(q5tyslXb zZ}+(FVq%U>YWUi=-2CLt?{T_cx~}bFobl+4<kA;9XP?}d%Q-hs;INxJcW;phUzT}> zT$Va-a#QT=C1;!Kco#GtTzG$S@7w(6OK0~KKFISrH1|B;J(FCw``fL4#xqz7h*lq{ zb!;%;5Xw(pA#thget`UO8{?;kb}9OIEt6qCW$kub>84x{Zvi7K+p#XjW&iw7volFc zxEVDIX=W{q&=Xa?`svIY-s?-ht&zO5TF9Y-Eos+PHN}_NyBYr|@yN*hT6kOU)&DZ{ zm+H~8G*1`2Jh9%U`oo&cshRy*`@g;M6XP*BxBaVYeEagnEnEs_Wm9!0?c-Wjvq$1- zk>_rY12s=Azm`w#lYbet-FxRL^Jwh@;<_4=%zkm9cer?ZIGDAUT2=VE-$;;U&MjkJ zV*Au$<;gACYwRPVZ>%sX^H}BDWU9@wHoT&cL+Zx$MNThRw)t)kt1n()RdDvW-mHzg zf`6TqdcR}#nzyfStkbvsd9Cxf|NK(_o$E_N-9?+dnl&OPx`w~jV&kZKc=D5!S|>wW z=gS+K76&f+hvi*AA@00=SL}L&OPo)2F8ggyUb0SO!2t(#9tYz&`f2xeUbtMgQ?KDc z!z#w`#l>4~#S;_%FWi;e;xM)C<>RWA0uc($*L3%uvJ1|Z)R|Da*l7jtRr%Z18Q;&A z$CMSl^VFSt%i`kW<u-@E^6h#3bK(9g;Xl&bcNMgBAK8^!F7j63<&IMfN-aMolzq*J zn|yBKKkh}}zsz33{Q1kjdw%6?g3H<FuMKYAJ#~up)W{?Lc02~NtK6!hmYkb-LE_A( zC;#{FE#}?yc*VOPd*1E+eQDhmF~e;t$!{KTwDiPGdOV}1=xHPOlN)T2o=crPCVDl5 zsD{X`<9fpU$XOxu++vSaPBK~{94kdmFx}p`z^CDpdV!30YGUL9mY=;TDeJ@5*WRsu ze(uTt*E{!GN4<YHcjvAs?_2L~?KQr9dA;S`zwa+E_n$9!CM|7C;-jRtk2AJC-?ULZ zKS*%Z#ceaME}R{A#5HQcg*PAny)}1}*A@C##Q&JVJp3^K`~Lg!(j5D*bzWBG;+=f) zf5(p4?7#Dlow$;HcvjAIsou)DVu!Asp2sB1_-=;lR^g~U8qD)bST602lHqWhd-}-P z+IhS8@@RgTQ)aVh(urM;k_%iHFNjZKUUNIqnC0BpCm~uBBVR2v?Nno)-S8&KaLHoX zqz&@DtxA1IH~tEF&0L<>yDv`Vj~9osk@fWD2d;m=e*fO}@X81`lY3z;w^j8v>3%6& zyQb&Z9=AL1*g7R26tG`iuzqSx&WdTdWd|6nHW`X3=gg^*6x(fnr~8ugu{Nt)3oaGs zJq>K|lvu>vFzxM*H?kV95||#uTtCU8x%|bYrhsdWt80CG7~TqQUb_BCTK*Boe3{=$ z5~A!C(~AnW8cBV9Jagu=x$o~s{k|BK7=Fw8db0S+k9*lC=fB`t`dy4MR!Wnt;1kya z745cbC(34STDY;{r`4GojwKdh%W~~6hHMCCR$IGA*=AAO>Z_R+QXF5m7~S!;(=D%m z8F1i4(9uS@Yh^JpGY`)CutoZok`%|Xy)Psuq+WBK-QvBBcQXI^Yl$VxCg-i?&355f z`(^fRbN2U}>)u(pH`>HLuem#S;Q{6LOR~2(zd5Mi-c?z2P;!Al-txZ&%x~0^pZCW8 zIkdwvy82<nL%ADY5AW}t?4Q4~`qD98&$&HskA-tK%-#J*!(d_Vj`K3UdpDlUk<Pst zl~xd^Y{+1J^uo_&bLURXdncIF_(JyW3)js1bEeJron4k`S}@JZ)7(Ed=LXl7_dAm( z?^l2S{@rtpgqPOOAHO@d@PIl0xtRCuSJ%5u++SLi_400}%a%LuydTf}x9F+U1HE+; zr%K8dt*o}+I2EgVk@@`PM|v~Vl<ps$`Y@ui@lG#aQLn{|Y`3Fdt<JJJANT&sejr)# z4Qt^Rb(QF)y*IXne3>nf%j^B-h}5Bu5HVlt$r7(!w{8w*%0CjD9Q3ovlVM6`@s{8} z*FEoce>?R#sPFq<=7rY`Fa6D2{qgntyLZ0733?d*%lg%UolGJ>&NF|!fBjdJeTLbk z0?ozG%rtj&BwtE#kW0I*6CQ6bt-^gcp?FPo%HHc;pB>7lTde4}HCNlcNGNc|2eX4s z;Z_WD*(LAtKB}51J^kq%?zE>(UuQ5~ku9p-_CU^Z-BE4Z^5F6<(zk>kX@AK&>*H0o z*;w;y)u)3VlW#t|{g3a{^MKH8>!eHae(RTAv}zAu`D^VjpHKb!x2gVGeDsjze@iZl z19KO<9^dUgZ(aVEy)QZyzO+ZLkSQq;5dYxZ{&CH+>}k#m6WxW3CGN%+%C$%eGHgzt z%gTFi^MsFUzLZ;r?V9c9e(^=clI@O4J<?mG-uj8QX^AhdcI;l^o}wlgd);XB>_68J zh%#@ve$wx4$F`@BJYJ_3o_e-J##Y)_l2Mm=*V*G++>bt12t5*KQ(m-CYMNijMYV4~ zrdj8$k$op}Z|`}H2MpU&yer=P+>)QA^mBDo{fCb)Jr^c1vR_a#e*ECno-`)emc7q& z1k*%kr1MxSKYkixddpV!@d~l)H`x8zH_lz+ux+#BgDEY$+o~hCTYb2;c46|)Rr6IZ zNEaMd;O5wrVYTk1EqCZ$o;6zpEh3J1%GB+OVz<0>FT>kjRHkU3go1b7aTO~I%b8oX zv*z!JS^L9bduz=91u0uEpM1{N)?~l`?b>}&+lpN^A5_H#dY$Fo{ypK>I|GmXN-TE* zTqZZZC}9!15;yfu4`0H;$<<-~jB#S7FLW{#_C!YUrcHGIcw^(YOP+;$f;5|%Hx@n@ zUHw@3fp^WaSvi*?tTigvU%3|J{K8|`XTAnY=f3o+K&^-d-O__ROQh3x1ccsdun1y% z5qMR-Zj0)d%#AOOHc6a2k*Ru%DKXQ0*Nk6je;Ka2Hq0}-esW>s0-v}%)qnXp_utg- z53czB@2g0`-#1@PG~aB_4wt&KM|tP^Fz$aXtXqxFohWDB6L!WSM#^^gRRPlroG&KK zF>2J|Gc~dj`EPGI^~|iJ*7LbSg4(QKi9guX@Lg<X*Opl#sr!z$#?E0Xn13c<-gUOt zV2M@X7xLJ>XLDz6`pIx}zbRWDTXEr*8}AnMPG~orzk<<jzWn<czI$Dpb3=1`%mR*V zGzeR-UjO^aya)GUcmFY)BHsD(&=bu9yT7LM&votlf9&$hX9^zwRagBo_xC@V^<eHv zFZRaAm9BHxWjf~iU1IDw`-qk8{6(_`lNBDv?pHIItx=ISi$ndem)V{C?Q<rrwKy=Z z=45}Srq$ts8-DMyHACKb-Cc0|RLH!~dpCG8I9yWUGU;|TZY(}}?_lUEVYbAEX<sh9 zPc!VXIq6={mT^-0tmtg@kBqmz3aM`tbU*s$MTE>d`Hnq1CfdzZ`S*U`d$<1y$3658 zOcGhpZ+Tsr>&;)s&*u+m{8}Pkk=>QUuNK`Pc9x}Vb>asZ_oWvKUy8`2bY8N&ZSb(- zItS0ihpuVq4pDVCRF^gv=Wr!{iZOmUwe*QM`%;<1f0^PVe;;p>tW^5Fb?%OwUDJ~* z%(#8HLM9$g3hmZb@VGmt+%`aP70VGeiKz!4*lI;D(8_9&V0QQOwhfF=W{P}MZBTJ* zPp12gthCQeN!o`*3v*6iJ*lQ1UHE6_+xM&fluoqJ^GW9l2tW6A0#m>3v~Rxg6YDHj z{E!!TA+}6kA<W%9NQ$>$&9=h<CJrShe15Z5>^gLJlT`1%x1z6HRz8{}IG6ju-<AJ3 zFMB5}5uR)(qd)C}g@CZ-hKt{GpWk;jikss3@h^jzG53oe9k~syKRRlvo=#a*nC%+B zxj}1Iv_NV=TC_!!euGu+;~8w(2h8rLX=uwBme~r}3+!JZd}EoX@!zQbod27*-+d-_ zwCmDZj~#Mmla+3+onuhVcg6fG>s0-({J)}?tDQPoF3ogr@uLvG%toHRHm^;8S>Li+ z+zXs?=_&u=W)6nE(aX9@bpBmztMI*Ze)X&@CZRUzcY;4(o-xb+_L2F}>Lu^3mGUG~ zE1z7L8mAP{e=1f@GJ|c#Jb~j?MW?3gJ~`vSbBpD|bgP#?8<v?|JiRYV#b7fh!<1j@ z{$}buzA4LHf~RNf-J@iipXPq0_3eo%vmGn<iY073KPTUM?!Nj2jW5g8FaI_6{OoMK z?FwHh*ZX_Zmp80k{>d=5$4TVI?~p$Wz2bjpc1qs6^-^YQP16I>IeM2vOoU%NnbzzW z)-LycHcOt5Fr$r?l)CGmo@M`5v)1TnFms&v=;!ssK<$C8Hp9Ztll<0e%L!~t@V`0p zSW;_OulOH+51GcZ?0&Y(_UxTe^!#P$Gr5MQxDyv%->N-yCdunRgU%e~>ymq&O%gJe zzTdb-f3pAb4cq(-osPIku&tI#?>-%9=i;*dl*T2`M!UWbJcmyFQ4fua?%&h;??i@V z&qX_h96@)RbK;YKJox#{=k?{=`Ca=$ROWGCmSx>^>#g3p?$9PCt398B10`yLq}5ir zmaV$E<Yh<)`-Lot>st!<C3{(}>1%shd-~y}>ofY4Ubo&p$XLK&dO7h)-HY#+G^<Z8 zO|{(nZ~7+*hp>Oso<4GEv}@$<wx1$c;AYp;CDrV@gr9u}ufgg!l?P6nM_oEL(QeBF z>6-_yUt(_HEI4Np#JnQnT2gxGUd;(p?F)UQeg%r1cH%zOmF(c8cADYjccu+fSVQ$v zHh1Vq=*)C92@T`RPEqV}dj7g6f5E-$-kVbcGM$<i^&O4PO~^R1_KC68nU9xUAMY%< z8+>5P_IHbS&q&qS@cm_p?<@81VXF_SCl#*uTqGBIh*2x8(dPko0)t!S@h`&fo}G<S zaQx!%T$x8kzb$tHb91HGpBq<?yfV9-R<=#BY^QX~LH4>6H*C(_mDd0J<h0Ap&vM`9 z_FCEVw#FIk`53=U{=k%7iQlhJ)v;UEC*dRE@?*JPf3`r4?^lK$Oe<>C)$9!!`r`l1 ze(O-V)Z)?BM;XRnZ#<G0W?3k{QrAT4Wcpu|9r?d|_boYaPM4iEWa~Lyb5=R48F?$J zPO5L&_s3B7?PJrUWlwibTY4(_aN)jNoTVN*HWw{**)yyb3pFIW+-b0qlodL+UX4#^ zb>JW4v+h%Q7BC4g+`l~Q(4raV5Aoblth`w=U2Af+xjW;F{8!Ffmh!c+ZsMu%`M#1} z=KaKt%32cPwn~Q<C_n1=NRCNjel>lI&fm)A_LJ2XvA>$|OW8-z{ZE%$qHO8nJ(td# z?|HDfJoj6?p3wEym$Ixf55DzHTN+&TVddo2+6PbUcQgHOyVl~Zx5GXmzCIDlCxyP| zH#c#*d;i}&HOp$H&4jo6JXgi)EV|HmvQ0E+3(pO&GgGeUoxAz{1pmxKO5a<Vjb(Sw z-Qm06B~btNf(b0_z6>ED&u@HXHSb;{wd<pQtirhk^Wv^Py57TP;a$vTy@kg|c2(Xd zWARJN{Z{N=edH|D9o5;L;u;4HKBYgZ`n5K#=vVo>eVM(_JkISE6e*~E-n-z}9vgYv zDSg`}J<->``e5-UH?_PiG9Q9EOMLpA6O~!Ja}*jrR9yQwuiymV^-VX__&WP?Emg{9 zFp4l3d>7Mr^F=K3g=C{a%uTOn4UB#n%n^&^yW2Rj!kLY>bM9Se%)og!VnNEp*QShb zSd0Z<HF!;Eo_uuDoU41!)jY3b3>A}Nj5Iq~@|a09=-Qq=Y05vB8*u!4^v(BQh55@J z7JC;v?EY0feS!DNYA%JWjy+G5Urnjkvdou{;!TyAJCiH*;nOwCmgsDnJGFvg0s~7y zN!9NjzPB4J)UWJ_*rCJ`(0?#9?A*&2KAnsSyC?U4?_n>vW;|=&rXOu)N2joH{n7cJ zdOC^G?V=thd#%ExhhC+p7aZBnyy6VY1B1vr$s7C2zgaKjzQuQjC*bCzQ)d|1V;|-T z3V-O=ntpNev$<=<pL*WAd0_h0&YP(k_ODj=IKOuIbW`%^@7XuF-<2<FHoCHVL*nhL zwTZ@sE2l3$V7vSBhwbLab}uscv!UwARiozXqSv{_k2P^$4z<u_I9RY{RcZ9clC(cF z_?S27>^c~^aPE;dt^-?Fu{W?qssu-iJ<+)#k>@v`T}|P;>sc;=c>)ZFMHdJ2?3lop z_~U%tj)|wIs(#*4u%G*>ZzO~5zV>`ZkHGlX*BcHiDMtyLhV6LLk>3zu9`i8aXV{Z_ z4LY~@*&IY;vclZ_y6v}YZ#TTvcz((CbGI+VmBeaq<S&Y!&7Rn0wIgySZ|Jd?8+Tm& z^=Q9rUzzQO%lhU?;%CpazMjPt>HW%TS9iri%?;n%&&Gdy^nm+nRKZ#vTW#xIwUzF! z!ot6Iy_w+T%9U=p=8fiW))qzuhiR?mPbM`mebg;bVwMxR&R(9gGvUz#4tJ?1nU~pJ zbQBJA9^SKf-BASwh3Eji#n)Woye&^9hMW!&xU%{|$jycAdIk=wgcJ9ydiQhNp96;b z-z;HHFp9QN-D)Ma^9S2(yZatH7izM%DCs@;>(tCy=pmnwK3#!3;eycqcXM{U-FG1S z%4G398b9~GeZQh+`R<aKHBT2X)E?UD-N3|eH#Ki%%gN(MPX4KLO)%6w@@m;92KGk> z=cdl$oOx#Y%k`Dl>-aqx7z-E-oX!MH%wSx{uQz?=de%hd050Yop+|UU^YSr?Sfnny z-(tLgO<{ZE(U@B=Z`Z7me~`1&=8q7oN8)zTn=KdTmj3wUy07ojg9<<9IiH?Hr@i;> zcyqjmGg8HwJx}tO1kVD_B%uc3cQU_BT9)vzZOb_$b)kPNLr+CR!4dWn&;C7YAK(7) z{CDJ@6t;s7Y#)SYd{31P{H1D^p%s7f_y3(Yx$Nq{`~GX(^m50C)BcSymm~h2iS2u; z`C+a6lIBwVe-)-(b{aA_Jf7=i^_MTa!ys^h#Z+}iyjVGd@ZrK!_ZtfIlo%K#9`$D& z%!x8MFsm@PVA8Z`6`8*D9r4?KGab{p!)PHX;BC8Bw!Pq+eRrkYey{FK+XSv~z88w| zd9T<Kp3Zk{%XekBoM!)!;b7!}5Sb?r**aMB8ni!UX|Gn3d3x5GdqItUj83!gA}Kbl zjNEjNpBAp~H$Of;wePuX-jR>fv*W(({J!V(^aCe$dbcuto^^U@P)@j?#)k*{X1>-A zESWF=v;0@xgYAzV9V-%Bynr=g*{>Hrl<G}>f4%*{lH2XG&;|!*g9eeQ8et#L@)<Sq z)-h=F_8F*I{uMZXXZzo(y9%DSmz}&it^S*qJ)3ySU7ehRccTJKlNk3Nzxm<j<vZ&& ztF49Egq7LNqqrj_yr=J!c>4ZONAi~=&yT-6eAZ&$_jkGP799H&vd1Fn#<q&WDaWQR z(&nnEj<+%ruH1fN-y!+-(D!9RE2m#6h|oypHY!-<GxH%^V6u}NXF11n^}N#!6M3^Q z&tzTnt@;mVvgM7Q$7dZRZmwcXiDgWkSDAlkcE_&sOPj;*MFuGQYj-_3bw!@<Dw9@t zHUD;RiQn_}*FP-!Ecs&I_b1L3F6wR7xy9>vw5EBRmjp;0n%}?LGo>NhbdUSv8^3q& zyHWipeA`c>#K(7*`Y^KZm|pZ&H{jd<AMZQ0+kdUHUVSyAy^QaE)XJYz**4i-SkBIO zfF*=M$HGDRu!z9ym6g&hGxtRcnDF*ka6id)(B${~S>38G|Jgt0oi9sqc2KsxR4$i5 zU;3x5mD?Aebu&m+kQM%YM}G3OpC>OV#wYG$3}RzWxu&yaruL`oy>rgKzq4dl6_-l) zO0B<Xwz*l)-#+ej+moKOY~ye9`otF%;heiX#8p|vvZ}>X9b*@s3QqXGa7$FSn!MQd zAMLk73TtJSo1XPy^~g=pod2ZBFvEpmildP#ufSnOV^ec(|6T5WTpq$_8j^ND-Kx*M zta_o%&no77Z_h}&tdU@GXiauy7u(n|wJ^HiZR$(|Ic3iYI{SZ?=K58Hefim5rTXL1 zIp2L6&+k0-Xf$86H@>fA&x-w?46p4=4oF`Nsm+#HCZD-=lC1M;r+T;Ul(d6ynYK37 zY+~EsqI$YfsV||5|M6VisF$nKedqVu2bW7vtDX}V?PGp^$$9N{&*JUdjIW9cxau4X zx!<K7v0}3l_nN6UHyqi@S$zK--~D@5s%H*`&vy|NPLIx%V5^SO{a<%6@qcXep36)R zxTlro+aFnaO_$Xt`nB1n?()o_g!}up6m5BRS8Mmb{Ze6n;wQaGjK1F>zc5Y3&s%=0 z&EI<kM^EK$6Wo^1^I|2(G{Nml4H<0upQv@!-3r{iT8<%RPUmeuh53HpzB&E(QuR|e zU3ARcc<M1B(Kp$qm)~#u^I-oq(>=$x=YCf0Da=z1Jh1KZ)Gue>ML!QrD4*4~m3i&$ z)CW(tvxMx|kY2gC@Uk?^-Yr&oU$wYHKP&AzUaZkj;c!cd?djq!bIsewA1mGco-*Ub z{nycl+{=IEJ-=?r65YtpR}h}CRR8NqtI4`n!IH20-LCzclk@$a;-0&aD_Nv(ez_oG zANHl-%+gOg=G-g1@kl3k*2%<&Z}V=>s8zAE{kH$`*{zqYgngWZp3ATraakNF)m^B} zDrYxmotN5d^N>|9Z>N@gc&6Y}Z<o9D{hDv=&N^C&KC-sg;xe5|bS@aNJ2W%Q)OXu` zbH{}lerkU%)T?Fw{J+?DpTC*(zy79!r~cpFdGY$P%;z$!V#^zt?;Op1e6M7|0cZB* zW=ncstqq*AFFNQ-d6)1$w?mh&KI&>$6<^oNq`CV;>Q?2dwTc%PcF4v{`!;Ud#$c5C zFIvh*C4X&qw5{^d+rekkK26&9WTwTp{qMu2`|oe9eDJi7b2mdD6L-J?#&=9Eg>iQS z6uvTEXP2As>(w&(w!drV?>*;zczfo<zt2>@Zs)wQPB<erc6IA&22*9xYy2{cZ@$w? zOpmla;OgC}s{3Sh!DF|x+zFv6r=r(yKQi^#aT5U>@gFbkG)rt={#+~X-|jx|GvD6D zrRQzqoGL|+iR{dnr#ENu0Vfdy-^_*L=gtQ%xGqwm<GXmVe-Hnc@BMu3YmaT%mb132 zrattQd-xAeBdrAKkIwmPEuLt%PRM3$THLf#FgA6Efvm`*lUdE`nVZyE^&j6jdoe`$ z+CTI9papedW_bbYrLKG3pJ8$3apq}h;SKZrniKB$KNc>WHE(KS>*lo^s?w^e{+!tr p?Y2Dc^V~UGef`UK9uWCa?;KVhpS$O<D+2=qgQu&X%Q~loCIGpKrV0Q6 literal 0 HcmV?d00001 diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index e69de29..299cd98 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -0,0 +1,80 @@ +body { + font-family: Arial, sans-serif; /* change later to PK font */ + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + background-color: #f9f9f9; + margin: 0; + } + + .login-container { + width: 70%; + max-width: 500px; + text-align: center; + background: white; + padding: 20px; + border-radius: 10px; + } + + .logo { + width: 50%; + margin-bottom: 20px; + } + + .login-form { + display: flex; + flex-direction: column; + align-items: center; + } + + .login-form label { + color: #102b46; + display: block; + margin-bottom: 1%; + margin-left: -50%; + text-align: left; + } + + .login-form input { + width: 65%; + padding: 10px; + border: none; + border-radius: 10px; + background-color: #eef5fe; + margin-bottom: 3%; + font-size: 16px; + } + + button { + background-color: #4e8ce1; + color: white; + border: none; + padding: 10px 20px; + border-radius: 10px; + font-size: 16px; + cursor: pointer; + } + + button:hover { + background-color: #a3cbff; + } + + .links { + display: flex; + justify-content: space-between; + width: 100%; + margin-top: 2%; + gap: 10%; + } + + .links a { + text-decoration: none; + color: #102b46; + font-size: 14px; + } + + .links a:hover { + text-decoration: underline; + } + \ No newline at end of file diff --git a/Medarbetarpuls/medarbetarapp/templates/login.html b/Medarbetarpuls/medarbetarapp/templates/login.html new file mode 100644 index 0000000..7ced640 --- /dev/null +++ b/Medarbetarpuls/medarbetarapp/templates/login.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<html lang="sv"> + <head> + {% load static %} + <script src="https://unpkg.com/htmx.org@1.8.4"></script> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Medarbetarpuls - Logga in</title> + <link rel="stylesheet" href="{% static 'styles.css' %}" /> + </head> + <body> + <!-- To test this, switch to login.html in views.py --> + <div class="login-container"> + <img src="{% static 'logo.png' %}" alt="Medarbetarpuls" class="logo" /> + + <form class="login-form"> + <!-- Add code here for POST request to server after the url and view is implemented in the backend. --> + <label for="email">Mejladress:</label> + <input type="email" id="email" placeholder="Mejladress" /> + + <label for="password">Lösenord:</label> + <input type="password" id="password" placeholder="Lösenord" /> + + <button type="submit">Logga in</button> + </form> + + <div class="links"> + <a href="#">Registrera ny organisation</a> + <a href="#">Skapa nytt konto</a> + </div> + </div> + </body> +</html> diff --git a/Medarbetarpuls/medarbetarapp/templates/login_admin.html b/Medarbetarpuls/medarbetarapp/templates/start_admin.html similarity index 100% rename from Medarbetarpuls/medarbetarapp/templates/login_admin.html rename to Medarbetarpuls/medarbetarapp/templates/start_admin.html diff --git a/Medarbetarpuls/medarbetarapp/templates/start_login.html b/Medarbetarpuls/medarbetarapp/templates/start_login.html deleted file mode 100644 index e69de29..0000000 diff --git a/Medarbetarpuls/medarbetarapp/templates/login_user.html b/Medarbetarpuls/medarbetarapp/templates/start_user.html similarity index 100% rename from Medarbetarpuls/medarbetarapp/templates/login_user.html rename to Medarbetarpuls/medarbetarapp/templates/start_user.html -- GitLab From c9e7e423a9b18339c6bc83d365ba4f610c1d981d Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Tue, 25 Mar 2025 16:04:40 +0100 Subject: [PATCH 03/14] fixed basic create_acc.html --- .../medarbetarapp/static/styles.css | 211 +++++++++++------- .../medarbetarapp/templates/create_acc.html | 32 ++- .../medarbetarapp/templates/login.html | 6 +- 3 files changed, 166 insertions(+), 83 deletions(-) diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index 299cd98..1239970 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -1,80 +1,133 @@ body { - font-family: Arial, sans-serif; /* change later to PK font */ - display: flex; - justify-content: center; - align-items: center; - height: 100vh; - background-color: #f9f9f9; - margin: 0; - } - - .login-container { - width: 70%; - max-width: 500px; - text-align: center; - background: white; - padding: 20px; - border-radius: 10px; - } - - .logo { - width: 50%; - margin-bottom: 20px; - } - - .login-form { - display: flex; - flex-direction: column; - align-items: center; - } - - .login-form label { - color: #102b46; - display: block; - margin-bottom: 1%; - margin-left: -50%; - text-align: left; - } - - .login-form input { - width: 65%; - padding: 10px; - border: none; - border-radius: 10px; - background-color: #eef5fe; - margin-bottom: 3%; - font-size: 16px; - } - - button { - background-color: #4e8ce1; - color: white; - border: none; - padding: 10px 20px; - border-radius: 10px; - font-size: 16px; - cursor: pointer; - } - - button:hover { - background-color: #a3cbff; - } - - .links { - display: flex; - justify-content: space-between; - width: 100%; - margin-top: 2%; - gap: 10%; - } - - .links a { - text-decoration: none; - color: #102b46; - font-size: 14px; - } - - .links a:hover { - text-decoration: underline; - } - \ No newline at end of file + font-family: Arial, sans-serif; /* change later to PK font */ + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + background-color: white; + margin: 0; +} + +.login-container { + width: 70%; + max-width: 500px; + text-align: center; + background: white; + padding: 20px; + border-radius: 10px; +} + +.logo { + width: 50%; + margin-bottom: 20px; +} + +.input-form { + display: flex; + flex-direction: column; + align-items: center; +} + +.input-form label { + color: #102b46; + display: block; + margin-bottom: 1%; + margin-left: -50%; + text-align: left; +} + +.input-form input { + width: 65%; + padding: 10px; + border: none; + border-radius: 10px; + background-color: #eef5fe; + margin-bottom: 3%; + font-size: 16px; +} + +button { + background-color: #4e8ce1; + color: white; + border: none; + padding: 10px 20px; + border-radius: 10px; + font-size: 16px; + cursor: pointer; +} + +button:hover { + background-color: #a3cbff; +} + +.links { + display: flex; + justify-content: space-between; + width: 100%; + margin-top: 2%; + gap: 10%; +} + +.links a { + text-decoration: none; + color: #102b46; + font-size: 14px; +} + +.links a:hover { + text-decoration: underline; +} + +.account-container { + background-color: white; /* Vit bakgrund */ + width: 100%; + max-width: 550px; + padding: 30px; + border-radius: 10px; + text-align: center; +} + +.account-container h2 { + margin-bottom: 30px; + font-size: 24px; + color: #102b46; +} + +.account-form { + display: flex; + flex-direction: column; + align-items: center; +} + +.account-form label { + align-self: flex-start; + margin-left: 10%; + margin-bottom: 5px; + color: #102b46; + font-size: 16px; +} + +.account-form input { + width: 80%; + padding: 14px; + font-size: 16px; + border: none; + border-radius: 10px; + background-color: #eef5fe; + margin-bottom: 20px; /* Larger space between inputs */ +} + +.account-form button { + background-color: #4e8ce1; + color: white; + border: none; + padding: 12px 24px; + border-radius: 10px; + font-size: 16px; + cursor: pointer; + margin-top: 10px; +} + +.account-form button:hover { + background-color: #a3cbff; +} diff --git a/Medarbetarpuls/medarbetarapp/templates/create_acc.html b/Medarbetarpuls/medarbetarapp/templates/create_acc.html index e66a600..45b6109 100644 --- a/Medarbetarpuls/medarbetarapp/templates/create_acc.html +++ b/Medarbetarpuls/medarbetarapp/templates/create_acc.html @@ -1 +1,31 @@ -<!-- Create account --> \ No newline at end of file +<!-- Create account --> +<!DOCTYPE html> +<html lang="sv"> + <head> + {% load static %} + <script src="https://unpkg.com/htmx.org@1.8.4"></script> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Skapa ditt nya konto</title> + <link rel="stylesheet" href="{% static 'styles.css' %}" /> + </head> + <body> + <!-- To test this, switch to create_acc.html in views.py --> + <body> + <div class="account-container"> + <h2>Skapa ditt nya konto</h2> + <form class="account-form" action="..." method="POST"> + <label for="name">Namn:</label> + <input type="text" id="name" name="name" placeholder="Namn" required /> + + <label for="email">Mejladress:</label> + <input type="email" id="email" name="email" placeholder="Mejladress" required /> + + <label for="password">Lösenord:</label> + <input type="password" id="password" name="password" placeholder="Lösenord" required /> + + <button type="submit">Skapa nytt konto</button> + </form> + </div> + </body> +</html> diff --git a/Medarbetarpuls/medarbetarapp/templates/login.html b/Medarbetarpuls/medarbetarapp/templates/login.html index 7ced640..0854c3c 100644 --- a/Medarbetarpuls/medarbetarapp/templates/login.html +++ b/Medarbetarpuls/medarbetarapp/templates/login.html @@ -13,13 +13,13 @@ <div class="login-container"> <img src="{% static 'logo.png' %}" alt="Medarbetarpuls" class="logo" /> - <form class="login-form"> + <form class="input-form"> <!-- Add code here for POST request to server after the url and view is implemented in the backend. --> <label for="email">Mejladress:</label> - <input type="email" id="email" placeholder="Mejladress" /> + <input type="email" id="email" placeholder="Mejladress" required /> <label for="password">Lösenord:</label> - <input type="password" id="password" placeholder="Lösenord" /> + <input type="password" id="password" placeholder="Lösenord" required /> <button type="submit">Logga in</button> </form> -- GitLab From 04d0adecab9ed914eddbdd61dfa316f96395180c Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Tue, 25 Mar 2025 16:08:04 +0100 Subject: [PATCH 04/14] fixed basic create_acc.html --- Medarbetarpuls/medarbetarapp/static/styles.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index 1239970..0aeaaa8 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -121,7 +121,7 @@ button:hover { background-color: #4e8ce1; color: white; border: none; - padding: 12px 24px; + padding: 10px 20px; border-radius: 10px; font-size: 16px; cursor: pointer; -- GitLab From 4605802795e3bd3e377b0b7edb3af1ba28772673 Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Thu, 27 Mar 2025 09:11:49 +0100 Subject: [PATCH 05/14] fixed create_org.html --- .../medarbetarapp/static/styles.css | 22 ++++----- .../medarbetarapp/templates/create_acc.html | 6 +-- .../medarbetarapp/templates/create_org.html | 47 ++++++++++++++++++- 3 files changed, 60 insertions(+), 15 deletions(-) diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index 0aeaaa8..ec243a2 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -78,7 +78,7 @@ button:hover { text-decoration: underline; } -.account-container { +.create-container { background-color: white; /* Vit bakgrund */ width: 100%; max-width: 550px; @@ -87,28 +87,28 @@ button:hover { text-align: center; } -.account-container h2 { - margin-bottom: 30px; +.create-container h2 { + margin-bottom: 12%; font-size: 24px; color: #102b46; } -.account-form { +.create-form { display: flex; flex-direction: column; align-items: center; } -.account-form label { +.create-form label { align-self: flex-start; - margin-left: 10%; + margin-left: 13%; margin-bottom: 5px; color: #102b46; font-size: 16px; } -.account-form input { - width: 80%; +.create-form input { + width: 70%; padding: 14px; font-size: 16px; border: none; @@ -117,7 +117,7 @@ button:hover { margin-bottom: 20px; /* Larger space between inputs */ } -.account-form button { +.create-form button { background-color: #4e8ce1; color: white; border: none; @@ -125,9 +125,9 @@ button:hover { border-radius: 10px; font-size: 16px; cursor: pointer; - margin-top: 10px; + margin-top: 8%; } -.account-form button:hover { +.create-form button:hover { background-color: #a3cbff; } diff --git a/Medarbetarpuls/medarbetarapp/templates/create_acc.html b/Medarbetarpuls/medarbetarapp/templates/create_acc.html index 45b6109..0aa408e 100644 --- a/Medarbetarpuls/medarbetarapp/templates/create_acc.html +++ b/Medarbetarpuls/medarbetarapp/templates/create_acc.html @@ -11,10 +11,10 @@ </head> <body> <!-- To test this, switch to create_acc.html in views.py --> - <body> - <div class="account-container"> + <div class="create-container"> <h2>Skapa ditt nya konto</h2> - <form class="account-form" action="..." method="POST"> + <!-- This form sends the input data to the server using a POST request --> + <form class="create-form" action="..." method="POST"> <label for="name">Namn:</label> <input type="text" id="name" name="name" placeholder="Namn" required /> diff --git a/Medarbetarpuls/medarbetarapp/templates/create_org.html b/Medarbetarpuls/medarbetarapp/templates/create_org.html index c79e205..feeee1d 100644 --- a/Medarbetarpuls/medarbetarapp/templates/create_org.html +++ b/Medarbetarpuls/medarbetarapp/templates/create_org.html @@ -1 +1,46 @@ -<!-- Create organization --> \ No newline at end of file +<!-- Create account --> +<!DOCTYPE html> +<html lang="sv"> + <head> + {% load static %} + <script src="https://unpkg.com/htmx.org@1.8.4"></script> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Skapa din nya organisation</title> + <link rel="stylesheet" href="{% static 'styles.css' %}" /> + </head> + <body> + <!-- To test this, switch to create_org.html in views.py --> + <div class="create-container"> + <h2>Skapa din nya organisation</h2> + <!-- This form sends the input data to the server using a POST request --> + <form class="create-form" action="..." method="POST"> + <label for="name">Organisationsnamn:</label> + <input type="text" id="name" name="name" placeholder="Namn" required /> + + <label for="name">Ditt namn:</label> + <input type="text" id="name" name="name" placeholder="Namn" required /> + + <label for="email">Din mejladress:</label> + <input + type="email" + id="email" + name="email" + placeholder="Mejladress" + required + /> + + <label for="password">Lösenord:</label> + <input + type="password" + id="password" + name="password" + placeholder="Lösenord" + required + /> + + <button type="submit">Skapa ny organisation</button> + </form> + </div> + </body> +</html> -- GitLab From 50de4143c2d2c53a25bc66eb80a2c2ad96261c77 Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Thu, 27 Mar 2025 10:14:34 +0100 Subject: [PATCH 06/14] fixed authentication pages --- .../medarbetarapp/static/styles.css | 26 +++++++++---- .../templates/authentication.html | 0 .../templates/authentication_acc.html | 38 +++++++++++++++++++ .../templates/authentication_org.html | 38 +++++++++++++++++++ .../medarbetarapp/templates/create_acc.html | 2 +- .../medarbetarapp/templates/create_org.html | 4 +- .../medarbetarapp/templates/login.html | 3 +- 7 files changed, 100 insertions(+), 11 deletions(-) delete mode 100644 Medarbetarpuls/medarbetarapp/templates/authentication.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/authentication_acc.html create mode 100644 Medarbetarpuls/medarbetarapp/templates/authentication_org.html diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index ec243a2..3bf2236 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -60,26 +60,31 @@ button:hover { background-color: #a3cbff; } -.links { +.account-help-links { display: flex; justify-content: space-between; width: 100%; - margin-top: 2%; + margin-top: 5%; gap: 10%; } -.links a { +.account-help-links:has(a:only-child) { /* If only one link, center it */ + justify-content: center; + margin-top: 8%; +} + +.account-help-links a { text-decoration: none; color: #102b46; font-size: 14px; } -.links a:hover { +.account-help-links a:hover { /* In HTML, the <a> tag stands for “anchor”, and it’s used to create hyperlinks */ text-decoration: underline; } .create-container { - background-color: white; /* Vit bakgrund */ + background-color: white; width: 100%; max-width: 550px; padding: 30px; @@ -87,9 +92,16 @@ button:hover { text-align: center; } -.create-container h2 { +.create-container h1 { /* h1 stands for main heading */ margin-bottom: 12%; font-size: 24px; + color: #4e8ce1; +} + +.create-container h2 { /* h2 stands for first subheading after h1 */ + margin-bottom: 12%; + font-weight: normal; /* Heading automatically bold, wants normal */ + font-size: 16px; color: #102b46; } @@ -125,7 +137,7 @@ button:hover { border-radius: 10px; font-size: 16px; cursor: pointer; - margin-top: 8%; + margin-top: 5%; } .create-form button:hover { diff --git a/Medarbetarpuls/medarbetarapp/templates/authentication.html b/Medarbetarpuls/medarbetarapp/templates/authentication.html deleted file mode 100644 index e69de29..0000000 diff --git a/Medarbetarpuls/medarbetarapp/templates/authentication_acc.html b/Medarbetarpuls/medarbetarapp/templates/authentication_acc.html new file mode 100644 index 0000000..7212005 --- /dev/null +++ b/Medarbetarpuls/medarbetarapp/templates/authentication_acc.html @@ -0,0 +1,38 @@ +<!-- Authenticate account --> +<!DOCTYPE html> +<html lang="sv"> + <head> + {% load static %} + <script src="https://unpkg.com/htmx.org@1.8.4"></script> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Skapa din nya organisation</title> + <link rel="stylesheet" href="{% static 'styles.css' %}" /> + </head> + <body> + <!-- To test this, switch to authentication_acc.html in views.py --> + <div class="create-container"> + <h1>Skapa ditt nya konto</h1> + <h2>En kod har skickats till din mejladress</h2> + <!-- This form sends the input data to the server using a POST request --> + <form class="create-form" action="..." method="POST"> + <label for="auth_code">Ange koden:</label> + <input + type="text" + id="auth_code" + name="auth_code" + placeholder="6-siffrig kod" + inputmode="numeric" + maxlength="6" + required + /> + + <button type="submit">Fortsätt</button> + </form> + <div class="account-help-links"> + <!-- Replace # later with actual path --> + <a href="#">Fick du ingen kod? Klicka här för att skicka igen</a> + </div> + </div> + </body> +</html> diff --git a/Medarbetarpuls/medarbetarapp/templates/authentication_org.html b/Medarbetarpuls/medarbetarapp/templates/authentication_org.html new file mode 100644 index 0000000..a64a771 --- /dev/null +++ b/Medarbetarpuls/medarbetarapp/templates/authentication_org.html @@ -0,0 +1,38 @@ +<!-- Authenticate organization --> +<!DOCTYPE html> +<html lang="sv"> + <head> + {% load static %} + <script src="https://unpkg.com/htmx.org@1.8.4"></script> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Skapa din nya organisation</title> + <link rel="stylesheet" href="{% static 'styles.css' %}" /> + </head> + <body> + <!-- To test this, switch to authentication_org.html in views.py --> + <div class="create-container"> + <h1>Skapa din nya organisation</h1> + <h2>En kod har skickats till din mejladress</h2> + <!-- This form sends the input data to the server using a POST request --> + <form class="create-form" action="..." method="POST"> + <label for="auth_code">Ange koden:</label> + <input + type="text" + id="auth_code" + name="auth_code" + placeholder="6-siffrig kod" + inputmode="numeric" + maxlength="6" + required + /> + + <button type="submit">Fortsätt</button> + </form> + <div class="account-help-links"> + <!-- Replace # later with actual path --> + <a href="#">Fick du ingen kod? Klicka här för att skicka igen</a> + </div> + </div> + </body> +</html> diff --git a/Medarbetarpuls/medarbetarapp/templates/create_acc.html b/Medarbetarpuls/medarbetarapp/templates/create_acc.html index 0aa408e..dd5a982 100644 --- a/Medarbetarpuls/medarbetarapp/templates/create_acc.html +++ b/Medarbetarpuls/medarbetarapp/templates/create_acc.html @@ -12,7 +12,7 @@ <body> <!-- To test this, switch to create_acc.html in views.py --> <div class="create-container"> - <h2>Skapa ditt nya konto</h2> + <h1>Skapa ditt nya konto</h1> <!-- This form sends the input data to the server using a POST request --> <form class="create-form" action="..." method="POST"> <label for="name">Namn:</label> diff --git a/Medarbetarpuls/medarbetarapp/templates/create_org.html b/Medarbetarpuls/medarbetarapp/templates/create_org.html index feeee1d..da40cf0 100644 --- a/Medarbetarpuls/medarbetarapp/templates/create_org.html +++ b/Medarbetarpuls/medarbetarapp/templates/create_org.html @@ -1,4 +1,4 @@ -<!-- Create account --> +<!-- Create organization --> <!DOCTYPE html> <html lang="sv"> <head> @@ -12,7 +12,7 @@ <body> <!-- To test this, switch to create_org.html in views.py --> <div class="create-container"> - <h2>Skapa din nya organisation</h2> + <h1>Skapa din nya organisation</h1> <!-- This form sends the input data to the server using a POST request --> <form class="create-form" action="..." method="POST"> <label for="name">Organisationsnamn:</label> diff --git a/Medarbetarpuls/medarbetarapp/templates/login.html b/Medarbetarpuls/medarbetarapp/templates/login.html index 0854c3c..e77e7a7 100644 --- a/Medarbetarpuls/medarbetarapp/templates/login.html +++ b/Medarbetarpuls/medarbetarapp/templates/login.html @@ -24,7 +24,8 @@ <button type="submit">Logga in</button> </form> - <div class="links"> + <div class="account-help-links"> + <!-- Replace # later with actual path to create_org and create_acc. --> <a href="#">Registrera ny organisation</a> <a href="#">Skapa nytt konto</a> </div> -- GitLab From 08e3fd6bcc2a0dc95097b0a85dba46a9d8018800 Mon Sep 17 00:00:00 2001 From: fares <fares535@student.liu.se> Date: Sun, 30 Mar 2025 17:16:56 +0200 Subject: [PATCH 07/14] Connect HTML templates to views and URLs --- Medarbetarpuls/medarbetarapp/urls.py | 24 +++++++++- Medarbetarpuls/medarbetarapp/views.py | 63 ++++++++++++++++++++++++++- 2 files changed, 84 insertions(+), 3 deletions(-) diff --git a/Medarbetarpuls/medarbetarapp/urls.py b/Medarbetarpuls/medarbetarapp/urls.py index 6b6568f..b045377 100644 --- a/Medarbetarpuls/medarbetarapp/urls.py +++ b/Medarbetarpuls/medarbetarapp/urls.py @@ -1,6 +1,26 @@ from django.urls import path -from .views import index +from . import views urlpatterns = [ - path("", index, name="name"), + path('add-employee/', views.add_employee_view, name='add_employee'), + path('analysis/', views.analysis_view, name='analysis'), + path('answer-survey/', views.answer_survey_view, name='answer_survey'), + path('authentication-acc/', views.authentication_acc_view, name='authentication_acc'), + path('authentication-org/', views.authentication_org_view, name='authentication_org'), + path('create-acc/', views.create_acc_view, name='create_acc'), + path('create-org/', views.create_org_view, name='create_org'), + path('create-survey/', views.create_survey_view, name='create_survey'), + path('index/', views.index_view, name='index'), + path('', views.login_view, name='login'), + path('my-org/', views.my_org_view, name='my_org'), + path('my-results/', views.my_results_view, name='my_results'), + path('my-surveys/', views.my_surveys_view, name='my_surveys'), + path('publish-survey/', views.publish_survey_view, name='publish_survey'), + path('settings-admin/', views.settings_admin_view, name='settings_admin'), + path('settings-user/', views.settings_user_view, name='settings_user'), + path('start-admin/', views.start_admin_view, name='start_admin'), + path('start-user/', views.start_user_view, name='start_user'), + path('survey-result/', views.survey_result_view, name='survey_result'), + path('survey-status/', views.survey_status_view, name='survey_status'), + path('unanswered-surveys/', views.unanswered_surveys_view, name='unanswered_surveys'), ] diff --git a/Medarbetarpuls/medarbetarapp/views.py b/Medarbetarpuls/medarbetarapp/views.py index 29653fc..73ed16a 100644 --- a/Medarbetarpuls/medarbetarapp/views.py +++ b/Medarbetarpuls/medarbetarapp/views.py @@ -4,9 +4,70 @@ import logging logger = logging.getLogger(__name__) -def index(request): +def index_view(request): logger.info("Testing") logger.warning("Testing warning!") logger.error("Testing error!!!") return render(request, "index.html") + +def add_employee_view(request): + return render(request, 'add_employee.html') + +def analysis_view(request): + return render(request, 'analysis.html') + +def answer_survey_view(request): + return render(request, 'answer_survey.html') + +def authentication_acc_view(request): + return render(request, 'authentication_acc.html') + +def authentication_org_view(request): + return render(request, 'authentication_org.html') + +def create_acc_view(request): + return render(request, 'create_acc.html') + +def create_org_view(request): + return render(request, 'create_org.html') + +def create_survey_view(request): + return render(request, 'create_survey.html') + +def login_view(request): + return render(request, 'login.html') + +def my_org_view(request): + return render(request, 'my_org.html') + +def my_results_view(request): + return render(request, 'my_results.html') + +def my_surveys_view(request): + return render(request, 'my_surveys.html') + +def publish_survey_view(request): + return render(request, 'publish_survey.html') + +def settings_admin_view(request): + return render(request, 'settings_admin.html') + +def settings_user_view(request): + return render(request, 'settings_user.html') + +def start_admin_view(request): + return render(request, 'start_admin.html') + +def start_user_view(request): + return render(request, 'start_user.html') + +def survey_result_view(request): + return render(request, 'survey_result.html') + +def survey_status_view(request): + return render(request, 'survey_status.html') + +def unanswered_surveys_view(request): + return render(request, 'unanswered_surveys.html') + -- GitLab From dfc9e66395a752aed8e61485df97de37b08c3c0c Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Wed, 2 Apr 2025 13:26:36 +0200 Subject: [PATCH 08/14] ready for merge --- Medarbetarpuls/medarbetarapp/static/styles.css | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index 3bf2236..f13d930 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -68,7 +68,8 @@ button:hover { gap: 10%; } -.account-help-links:has(a:only-child) { /* If only one link, center it */ +.account-help-links:has(a:only-child) { + /* If only one link, center it */ justify-content: center; margin-top: 8%; } @@ -79,12 +80,13 @@ button:hover { font-size: 14px; } -.account-help-links a:hover { /* In HTML, the <a> tag stands for “anchor”, and it’s used to create hyperlinks */ +.account-help-links a:hover { + /* In HTML, the <a> tag stands for “anchor”, and it’s used to create hyperlinks */ text-decoration: underline; } .create-container { - background-color: white; + background-color: white; width: 100%; max-width: 550px; padding: 30px; @@ -92,13 +94,15 @@ button:hover { text-align: center; } -.create-container h1 { /* h1 stands for main heading */ +.create-container h1 { + /* h1 stands for main heading */ margin-bottom: 12%; font-size: 24px; color: #4e8ce1; } -.create-container h2 { /* h2 stands for first subheading after h1 */ +.create-container h2 { + /* h2 stands for first subheading after h1 */ margin-bottom: 12%; font-weight: normal; /* Heading automatically bold, wants normal */ font-size: 16px; @@ -106,6 +110,7 @@ button:hover { } .create-form { + /* For create org/acc */ display: flex; flex-direction: column; align-items: center; -- GitLab From 7147ed99c470022e8770c7eee514664cf2b56dd0 Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Wed, 2 Apr 2025 14:53:13 +0200 Subject: [PATCH 09/14] settings_user.html fixed, should fix delete button functionality --- .../medarbetarapp/static/styles.css | 74 +++++++++++++++++-- .../templates/settings_user.html | 38 ++++++++++ Medarbetarpuls/medarbetarapp/views.py | 61 +++++++++------ 3 files changed, 146 insertions(+), 27 deletions(-) diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index eaf82b5..2f83aa6 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -158,7 +158,7 @@ button:hover { .grid-container { display: flex; max-width: 900px; - flex-wrap: wrap; + flex-wrap: wrap; justify-content: center; gap: 20px; } @@ -187,14 +187,14 @@ button:hover { /* Line at the bottom of the grid item */ .grid-item::after { - content: ""; - position: absolute; + content: ""; + position: absolute; left: 0; right: 0; bottom: 0; - height: 4px; - background-color: #ffffff; - z-index: 1; + height: 4px; + background-color: #ffffff; + z-index: 1; } /* Add specific classes for different colors */ @@ -226,3 +226,65 @@ button:hover { box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } +.delete-button { + margin-top: 5%; + background-color: #f95e5e; +} + +.delete-button:hover { + background-color: #f98b8b; +} + +.settings-container { + text-align: center; + padding: 30px; + border-radius: 10px; + background-color: white; +} + +h1 { + font-size: 32px; + color: #102b46; + margin-bottom: 20%; +} + +.info-table { + width: 300px; + margin: 0 auto; + border-radius: 5px; + border: 1px solid #e8ebf1; + background-color: white; + margin-bottom: 20px; +} + +.table-header { + background-color: #e8ebf1; + padding: 10px; + font-weight: bold; + text-align: left; +} + +.table-row { + display: flex; + justify-content: space-between; + padding: 10px; + border-bottom: 1px solid #ddd; +} +.label { + color: #102b46; + font-weight: normal; +} + +.value { + color: #4e8ce1; +} + +.value a { + /* For links in table */ + color: #4e8ce1; + text-decoration: none; +} + +.value a:hover { + text-decoration: underline; +} diff --git a/Medarbetarpuls/medarbetarapp/templates/settings_user.html b/Medarbetarpuls/medarbetarapp/templates/settings_user.html index e69de29..6d94e8d 100644 --- a/Medarbetarpuls/medarbetarapp/templates/settings_user.html +++ b/Medarbetarpuls/medarbetarapp/templates/settings_user.html @@ -0,0 +1,38 @@ +<!DOCTYPE html> +<html lang="sv"> + <head> + {% load static %} + <script src="https://unpkg.com/htmx.org@1.8.4"></script> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Skapa din nya organisation</title> + <link rel="stylesheet" href="{% static 'styles.css' %}" /> + </head> + <body> + <div class="settings-container"> + <!-- Change later, if time, so user.profile_pic shows here (or default) <img src="{% static 'logo.png' %}" alt="Medarbetarpuls" class="logo" /> --> + <h1>Inställningar</h1> + <div class="info-table"> + <div class="table-header">INLOGGNINGSUPPGIFTER</div> + <div class="table-row"> + <div class="label">Namn</div> + <div class="value"> <!-- Test if username shows up --> + {{ user.name }} <a href="#"><span class="edit-icon">✏️</span></a> + </div> + </div> + <div class="table-row"> + <div class="label">Lösenord</div> + <div class="value"> + **************** <a href="#"><span class="edit-icon">✏️</span></a> + </div> + </div> + <div class="table-row"> + <div class="label">Mailadress</div> + <div class="value"> + {{ user.email }} <!-- Test if user email shows up --> + </div> + </div> + </div> + <button class="delete-button">Radera konto</button> + </body> +</html> diff --git a/Medarbetarpuls/medarbetarapp/views.py b/Medarbetarpuls/medarbetarapp/views.py index 73ed16a..747e242 100644 --- a/Medarbetarpuls/medarbetarapp/views.py +++ b/Medarbetarpuls/medarbetarapp/views.py @@ -11,63 +11,82 @@ def index_view(request): return render(request, "index.html") + def add_employee_view(request): - return render(request, 'add_employee.html') + return render(request, "add_employee.html") + def analysis_view(request): - return render(request, 'analysis.html') + return render(request, "analysis.html") + def answer_survey_view(request): - return render(request, 'answer_survey.html') + return render(request, "answer_survey.html") + def authentication_acc_view(request): - return render(request, 'authentication_acc.html') + return render(request, "authentication_acc.html") + def authentication_org_view(request): - return render(request, 'authentication_org.html') + return render(request, "authentication_org.html") + def create_acc_view(request): - return render(request, 'create_acc.html') + return render(request, "create_acc.html") + def create_org_view(request): - return render(request, 'create_org.html') + return render(request, "create_org.html") + def create_survey_view(request): - return render(request, 'create_survey.html') + return render(request, "create_survey.html") + def login_view(request): - return render(request, 'login.html') + return render(request, "login.html") + def my_org_view(request): - return render(request, 'my_org.html') + return render(request, "my_org.html") + def my_results_view(request): - return render(request, 'my_results.html') + return render(request, "my_results.html") + def my_surveys_view(request): - return render(request, 'my_surveys.html') + return render(request, "my_surveys.html") + def publish_survey_view(request): - return render(request, 'publish_survey.html') + return render(request, "publish_survey.html") + def settings_admin_view(request): - return render(request, 'settings_admin.html') + return render(request, "settings_admin.html") + def settings_user_view(request): - return render(request, 'settings_user.html') + return render(request, "settings_user.html", {"user": request.user}) + def start_admin_view(request): - return render(request, 'start_admin.html') + return render(request, "start_admin.html") + def start_user_view(request): - return render(request, 'start_user.html') + return render(request, "start_user.html") + def survey_result_view(request): - return render(request, 'survey_result.html') + return render(request, "survey_result.html") + def survey_status_view(request): - return render(request, 'survey_status.html') + return render(request, "survey_status.html") -def unanswered_surveys_view(request): - return render(request, 'unanswered_surveys.html') +def unanswered_surveys_view(request): + return render(request, "unanswered_surveys.html") -- GitLab From d27259da92881d0ae4d63ef55fda9143de0527aa Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Wed, 2 Apr 2025 19:09:58 +0200 Subject: [PATCH 10/14] added popup for deleting user acc --- .../medarbetarapp/static/styles.css | 60 +++++++++++++++++++ .../templates/settings_user.html | 23 ++++++- 2 files changed, 82 insertions(+), 1 deletion(-) diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index 2f83aa6..328670f 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -288,3 +288,63 @@ h1 { .value a:hover { text-decoration: underline; } + +.popup-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); /* Alpha: 0.4 = 40% opacity */ + display: flex; + justify-content: center; + align-items: center; + z-index: 1000; /* Sets the stacking order, higher numbers mean closer to the user */ +} + +.popup-content { + background-color: #e6f0fa; + padding: 20px; + border-radius: 10px; + text-align: center; + width: 300px; + position: relative; /* So the close button can be positioned relative to this */ +} + +.close-button { + /* Can be used as X-button to close popups */ + position: absolute; + top: 5px; + right: 5px; + font-size: 20px; + cursor: pointer; + color: #102b46; +} + +.close-button:hover { + color: #ff4b4b; +} + +/* Popup Content */ +.popup-content { + background-color: #e6f0fa; + padding: 20px; + border-radius: 10px; + text-align: center; + width: 300px; +} + +.popup-content input { + width: 90%; + padding: 14px; + margin: 10px 0; + border: none; + border-radius: 10px; + background-color: white; +} + +h2 { + font-size: 24px; + margin-bottom: 10px; + color: #102b46; +} diff --git a/Medarbetarpuls/medarbetarapp/templates/settings_user.html b/Medarbetarpuls/medarbetarapp/templates/settings_user.html index 6d94e8d..4226b1e 100644 --- a/Medarbetarpuls/medarbetarapp/templates/settings_user.html +++ b/Medarbetarpuls/medarbetarapp/templates/settings_user.html @@ -7,6 +7,15 @@ <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Skapa din nya organisation</title> <link rel="stylesheet" href="{% static 'styles.css' %}" /> + <script> + function openPopup() { + document.getElementById("delete-popup").style.display = "flex"; + } + + function closePopup() { + document.getElementById("delete-popup").style.display = "none"; + } + </script> </head> <body> <div class="settings-container"> @@ -33,6 +42,18 @@ </div> </div> </div> - <button class="delete-button">Radera konto</button> + <button class="delete-button"onclick="openPopup()">Radera konto</button> + <!-- Delete Confirmation Popup --> + <div id="delete-popup" class="popup-overlay" style="display: none;"> + <div class="popup-content"> + <span class="close-button" onclick="closePopup()">×</span> <!-- × multiplication symbol --> + <h2>OBS!</h2> + <p>Är du säker på att du vill ta bort ditt konto?</p> + <p>Detta kommer genast logga ut dig och du kommer inte kunna logga in igen.</p> + <label for="password">Lösenord:</label> + <input type="password" id="password" placeholder="*************"> <!--fix--> + <button class="delete-button">Radera konto</button> + </div> + </div> </body> </html> -- GitLab From 5ab42f011795f4b9f7b2f44b7e72853673b7676c Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Thu, 3 Apr 2025 11:17:53 +0200 Subject: [PATCH 11/14] fixed my_org.html. Must be tested while logged in as admin --- .../medarbetarapp/static/styles.css | 18 ++++- .../medarbetarapp/static/trashcan.png | Bin 0 -> 3787 bytes .../medarbetarapp/templates/my_org.html | 65 +++++++++++++++++- Medarbetarpuls/medarbetarapp/views.py | 20 +++++- 4 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 Medarbetarpuls/medarbetarapp/static/trashcan.png diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index 44537b6..8abddac 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -97,7 +97,7 @@ button:hover { .create-container h1 { /* h1 stands for main heading */ margin-bottom: 12%; - font-size: 32px; + font-size: 28px; color: #4e8ce1; } @@ -349,3 +349,19 @@ button:hover { border-radius: 10px; background-color: white; } + +.trashcan-button { + background-color: transparent; + border: none; + cursor: pointer; + padding: 5px; +} + +.trashcan-button:hover img { + filter: brightness(0.8); /* Darken on hover */ +} + +.icon { + width: 20px; + height: 20px; +} diff --git a/Medarbetarpuls/medarbetarapp/static/trashcan.png b/Medarbetarpuls/medarbetarapp/static/trashcan.png new file mode 100644 index 0000000000000000000000000000000000000000..b998f90f6b1f5b0a3a87562ca7c639d997bd1f88 GIT binary patch literal 3787 zcmeAS@N?(olHy`uVBq!ia0y~yVDJNB4mJh`hQ3t_vJ4DdhMCUJ0iMpz3I#>^X_+~x z3=AHfbElPu1m6^EKfl*}Z@?sht|=F?GlG~rc=vit)YCHL6!1DQfkDa4C8WS5aN;r! zBaH_Qi=8KKRO)JF4BYsdMbhO;VS$MBG|!Z^lK1yizCSzrzWn#P?D>1o-%WpCdu<oP zgg?!!hkPP98+aB*h&+6Lw4=8>J%OE(=K}+C4#R_j&6}OXez-BsWU9H*lQUEJhxp!I zd<s8*YhAYQImqyT{*;}ON`?#pGkTtX`f)QxQv9TaZTKA3?fxfcY%}paXW(^CDYD5Z zY;y4@o#>ixGgJ93KO42!NS-b}_bBzllRN5<do6|b^-N5V6o1a~W2ezRwdCd!&o+l+ z`A;@V*7%t*XiU1J_pCTLB}X@Tl7>-}?&C^^2OcNmKU~s}ICEb3H2=|aXQK3kRF-#0 zs>KAi^-dP<et7=8@AK}XXAJnvdzBv<-k2#FDf6(1A?^I1NRi51$xTYuH!LhI403gI z_i0?IkNq=y()Y4yaV_=lBwgfx9R3zwH<OoP!?M(^H-EL~W{NVzzGe*A{kQ#Wf<8mn zrhTP+wS{uKYT|;9Jkm+mUVZ0Ij5p)_Y)$<a?|;qbt9OpCIUls|?)#^S6`v<tOe!&S zjx*0ot6JuA<ixp01wVP7&2Rr9&;GAePE7ER%DxW$DXuQ3m-#68OxqfLLb!u<rc;~4 zkNLBH@E`uS<mS$4owt4nUYHiav{X^bp-zrLLrYMBvpPll!uwk8WA4m9&vsv&Ib-hc z^G*M1!*}@nJ0Yf0-<Ry}Vzfgj@Z6hOf1;R76c}6`m|r<azhD+Vz_RUt;0^}<2h2>4 z8XYW!35E}vL?$r0D2R(RY+WERrD<(~`U<wv1%f8cW(5)@jmZy8EZFrLPbaY4VGJ_h zo7bTEf$NNeKuhZh0nwoL5(VcIGMic>CP+VFW_1<}keR}v>g?pfB<k>bLC^}BRc)^p zroD)Mp;02Wi-Fg9`+~p>p<kj^?8*k5%MM0u5X@oSoZxT4(bpn=@Z<+03wgb!?FXh7 zFxLpYYw<rk{efTvmwn@M!3F_At3}-gf?|i<oF-PNa0)7}o*=Y@DbwNB1i2;hJG(q4 zE<X`1!shB~7~nI7`;@$B>!U@}7KSY}Tf8ceJz(w%yDOnrG_tt93i`TbFFJei+zW;h z9V^MX-Fj}}3ua%CeX;q4;1`QuqHN6zlY0#NB<g)+)I>KkZI;|DeYwxFRq|L*;<Akq zYpkxxyzb&XTC^c4$8Z~0wLrB{HLG=BZL{*Dl7ej(@i8`j9ok1iA4C<X7laoG?~vRh zbWh-Y5C756A5MQv{oz)_U&mqJH(yahxQBCHi-(g|qVB>;7u+nocX(GgstA4U@H<kl zs9{H2gr|**jlYcQKGi^vG!-+=Mis?e#kcBnmF_C-RhWFzErq|xCer7gQ=Zy<#rx{} z0~csTXt8K~5DC-1qEVt16IijVBitn9OGwO`8S5h!R=5;;d|W9MchaMC?UBH!r6G$; zLSD9A+F}%X)6Fu((z$YTQTHd-r|u#;M>`%lKMd^B_^pwyksQ*p%0D%D=atecZm%L= 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 Y!2i!Mi{ZZTw{sxAr>mdKI;Vst01lxn2LJ#7 literal 0 HcmV?d00001 diff --git a/Medarbetarpuls/medarbetarapp/templates/my_org.html b/Medarbetarpuls/medarbetarapp/templates/my_org.html index c40f694..1ad30c8 100644 --- a/Medarbetarpuls/medarbetarapp/templates/my_org.html +++ b/Medarbetarpuls/medarbetarapp/templates/my_org.html @@ -1 +1,64 @@ -<!-- My organization --> \ No newline at end of file +<!-- My organization --> +<!DOCTYPE html> +<html lang="sv"> + <head> + {% load static %} + <script src="https://unpkg.com/htmx.org@1.8.4"></script> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Inställningar</title> + <link rel="stylesheet" href="{% static 'styles.css' %}" /> + </head> + <body> + <div class="create-container"> + <h1>{{ organization.name }}</h1> + + <!-- Search Bar --> + <div class="search-container"> + <input + type="text" + id="searchInput" + placeholder="Sök..." + onkeyup="filterTable()" + /> + <button type="button">Sök</button> + </div> + + <!-- Employee table --> + <div class="table-container"> + <table> + <thead> + <tr> + <th>Namn</th> + <th>Mejladress</th> + <th></th> + <!-- Empty column for removal symbol --> + </tr> + </thead> + <tbody id="employeeTable"> + {% for employee in employees %} + <tr> + <td>{{ employee.name }}</td> + <td>{{ employee.email }}</td> + <td> + <button class="trashcan-button"> + <img + src="{% static 'trashcan.png' %}" + alt="Delete" + class="icon" + /> + </button> + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + </div> + + <!-- Script for filtering --> + <script> + function filterTable() {} + </script> + </body> +</html> diff --git a/Medarbetarpuls/medarbetarapp/views.py b/Medarbetarpuls/medarbetarapp/views.py index b8edd13..b57d2b1 100644 --- a/Medarbetarpuls/medarbetarapp/views.py +++ b/Medarbetarpuls/medarbetarapp/views.py @@ -115,7 +115,25 @@ def login_view(request): def my_org_view(request): - return render(request, "my_org.html") + organization = request.user.admin + + # Retrieve all employee groups associated with this organization + employee_groups = models.EmployeeGroup.objects.filter(organization=organization) + + # Collect all employees from these groups + employees = models.CustomUser.objects.filter( + employee_groups__in=employee_groups + ).distinct() + return render( + request, + "my_org.html", + { + "user": request.user, + "organization": organization, + "employees": employees, + }, + ) + # TODO: test if this works, must be logged in def my_results_view(request): -- GitLab From 414674cea4f068e051c47935f5e8b9a17a1ebfdf Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Fri, 4 Apr 2025 14:46:26 +0200 Subject: [PATCH 12/14] fixed admin settings --- Medarbetarpuls/medarbetarapp/views.py | 126 ++++++++++++++------------ 1 file changed, 69 insertions(+), 57 deletions(-) diff --git a/Medarbetarpuls/medarbetarapp/views.py b/Medarbetarpuls/medarbetarapp/views.py index 192f3cb..ab6d92e 100644 --- a/Medarbetarpuls/medarbetarapp/views.py +++ b/Medarbetarpuls/medarbetarapp/views.py @@ -36,49 +36,53 @@ def create_acc_view(request): @csrf_protect def create_acc(request) -> HttpResponse: """ - Creates an account with the fetched input, if the + Creates an account with the fetched input, if the email exists in any organization email list, to said - organization. + organization. Args: request: The input text from the name, email and password fields Returns: - HttpResponse: Redirects to login page if all is good, otherwise error message 400 + HttpResponse: Redirects to login page if all is good, otherwise error message 400 """ - if request.method == 'POST': - if request.headers.get('HX-Request'): - name = request.POST.get('name') - email = request.POST.get('email') - password = request.POST.get('password') - + if request.method == "POST": + if request.headers.get("HX-Request"): + name = request.POST.get("name") + email = request.POST.get("email") + password = request.POST.get("password") + # Check that email is registrated to an org org = find_organization_by_email(email) - if org is None: + if org is None: logger.error("This email is not authorized for registration.") - return HttpResponse(status=400) - - # Create user - new_user = models.CustomUser.objects.create_user(email,name,password) + return HttpResponse(status=400) + + # Create user + new_user = models.CustomUser.objects.create_user(email, name, password) # Add new user to base (everyone) employee group of org - base_group = org.employee_groups.filter(name="Alla").first() # pyright: ignore + base_group = org.employee_groups.filter(name="Alla").first() # pyright: ignore if base_group: - new_user.employee_groups.add(base_group) + new_user.employee_groups.add(base_group) new_user.save() else: - logger.error(f"No group found with the name '{base_group}' in the organization '{org.name}'") - return HttpResponse(status=400) + logger.error( + f"No group found with the name '{base_group}' in the organization '{org.name}'" + ) + return HttpResponse(status=400) + + return HttpResponse(headers={"HX-Redirect": "/"}) # Redirect to login page - return HttpResponse(headers={"HX-Redirect": "/"}) # Redirect to login page - return HttpResponse(status=400) # Bad request if no expression + def find_organization_by_email(email: str) -> models.Organization | None: email_entry = get_object_or_404(models.EmailList, email=email) return email_entry.org # Follow the ForeignKey to Organization + def add_employee_view(request): return render(request, "add_employee.html") @@ -96,17 +100,17 @@ def add_employee_email(request) -> HttpResponse: Returns: HttpResponse: Returns status 204 if all is good, otherwise 400 """ - if request.method == 'POST': - if request.headers.get('HX-Request'): - email = request.POST.get('email') + if request.method == "POST": + if request.headers.get("HX-Request"): + email = request.POST.get("email") user = request.user - if user.user_role == models.UserRole.ADMIN and hasattr(user, "admin"): + if user.user_role == models.UserRole.ADMIN and hasattr(user, "admin"): org = user.admin email_instance = models.EmailList(email=email, org=org) email_instance.save() return HttpResponse(status=204) - + return HttpResponse(status=400) # Bad request if no expression @@ -127,39 +131,43 @@ def authentication_org_view(request): def create_org_view(request): - return render(request, 'create_org.html') + return render(request, "create_org.html") + def create_org_redirect(request): if request.headers.get("HX-Request"): - return HttpResponse(headers={"HX-Redirect": "/create_org_view/"}) # Redirects in HTMX + return HttpResponse( + headers={"HX-Redirect": "/create_org_view/"} + ) # Redirects in HTMX return redirect("/create_org_view/") # Normal Django redirect for non-HTMX requests + @csrf_protect def create_org(request) -> HttpResponse: """ - Creates an organization and admin account - with the fetched input + Creates an organization and admin account + with the fetched input Args: - request: The input text from the org_name, name, email and password fields + request: The input text from the org_name, name, email and password fields Returns: - HttpResponse: Returns status 204 if all is good, otherwise 400 + HttpResponse: Returns status 204 if all is good, otherwise 400 """ - if request.method == 'POST': - if request.headers.get('HX-Request'): - org_name = request.POST.get('org_name') - name = request.POST.get('name') - email = request.POST.get('email') - password = request.POST.get('password') - + if request.method == "POST": + if request.headers.get("HX-Request"): + org_name = request.POST.get("org_name") + name = request.POST.get("name") + email = request.POST.get("email") + password = request.POST.get("password") + # Create organization org = models.Organization(name=org_name) org.save() # Create admin account - admin_account = models.CustomUser.objects.create_user(email,name,password) + admin_account = models.CustomUser.objects.create_user(email, name, password) admin_account.user_role = models.UserRole.ADMIN admin_account.is_staff = True admin_account.is_superuser = True @@ -175,25 +183,25 @@ def create_org(request) -> HttpResponse: # Adding a org approved email for easy testing test_email = models.EmailList(email="user22@example.com", org=org) test_email.save() - - return HttpResponse(headers={"HX-Redirect": "/"}) # Redirect to login page - + + return HttpResponse(headers={"HX-Redirect": "/"}) # Redirect to login page + return HttpResponse(status=400) # Bad request if no expression + def create_survey_view(request): return render(request, "create_survey.html") def login_view(request): - - #maybe implement sesion timer so you dont get logged out?? + # maybe implement sesion timer so you dont get logged out?? if request.user.is_authenticated: logger.debug("User %e is already logged in.", request.user) - #return redirect('start_user') - + # return redirect('start_user') + if request.method == "POST": - email = request.POST.get('email') - password = request.POST.get('password') + email = request.POST.get("email") + password = request.POST.get("password") user = authenticate(request, username=email, password=password) @@ -203,18 +211,19 @@ def login_view(request): login(request, user) if user.user_role == models.UserRole.ADMIN: logger.debug("Admin %e successfully logged in.", email) - return redirect('start_admin') - else: #implement check if user is creator or responder? + return redirect("start_admin") + else: # implement check if user is creator or responder? logger.debug("User %e successfully logged in.", email) - return redirect('start_user') + return redirect("start_user") else: logger.warning("Login attempt for inactive user %e", email) - return render(request, 'login.html') + return render(request, "login.html") else: logger.warning("Failed login attempt for %e", email) - return render(request, 'login.html') + return render(request, "login.html") + + return render(request, "login.html") - return render(request, 'login.html') def my_org_view(request): organization = request.user.admin @@ -251,7 +260,11 @@ def publish_survey_view(request): def settings_admin_view(request): - return render(request, "settings_admin.html") + return render( + request, + "settings_admin.html", + {"user": request.user, "organization": request.user.admin}, + ) def settings_user_view(request): @@ -261,8 +274,7 @@ def settings_user_view(request): def start_admin_view(request): return render( request, - "start_admin.html", # TODO: test this properly, must be logged in for this view to work. - {"user": request.user, "organization": request.user.admin}, + "start_admin.html" ) # Fix so only works if the user is actually an admin -- GitLab From 06f98f526c5cec0572547abe50b3fef6fb749599 Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Fri, 4 Apr 2025 20:16:36 +0200 Subject: [PATCH 13/14] Fixed add_employee.html --- .../medarbetarapp/static/go-back-btn.png | Bin 0 -> 12352 bytes .../medarbetarapp/static/styles.css | 56 ++++++++++++----- .../medarbetarapp/templates/add_employee.html | 58 ++++++++++++++++++ .../medarbetarapp/templates/my_org.html | 4 +- .../templates/settings_user.html | 2 +- Medarbetarpuls/medarbetarapp/views.py | 2 +- 6 files changed, 105 insertions(+), 17 deletions(-) create mode 100644 Medarbetarpuls/medarbetarapp/static/go-back-btn.png diff --git a/Medarbetarpuls/medarbetarapp/static/go-back-btn.png b/Medarbetarpuls/medarbetarapp/static/go-back-btn.png new file mode 100644 index 0000000000000000000000000000000000000000..8b6d7d56e0603b78eca3795f1561dcac9430b171 GIT binary patch literal 12352 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 F69BQlWWWFb literal 0 HcmV?d00001 diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index 56f2e1d..bbb7bad 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -333,7 +333,35 @@ button:hover { color: #ff4b4b; } -/* Popup Content */ +.go-back-button { + position: absolute; + top: 30px; + left: 30px; + margin: 10px; + background-color: transparent; + border: none; + cursor: pointer; + outline: none; +} +.go-back-button:hover { + background-color: transparent; /* Prevent blue background */ + outline: none; /* Remove focus outline */ +} + +.go-back-button:focus { + outline: none; /* Prevent focus outline */ +} + +.go-back-button:hover img { + filter: brightness(1.1); /* Lighten on hover */ +} + +.back-icon { + width: 50px; + height: 50px; +} + +/* Use for popups */ .popup-content { background-color: #e6f0fa; padding: 20px; @@ -358,6 +386,19 @@ button:hover { padding: 5px; } +.trashcan-button:hover { + background-color: transparent; /* Prevent blue background */ + outline: none; /* Remove focus outline */ +} + +.trashcan-button:hover img { + filter: sepia(100%) saturate(500%) hue-rotate(-30deg); /* Red hue */ +} + +.trashcan-button:focus { + outline: none; /* Prevent focus outline */ +} + .search-container { margin: 15px auto; display: flex; @@ -406,19 +447,6 @@ th { background-color: #e0e0e0; } -.trashcan-button:hover { - background-color: transparent; /* Prevent blue background */ - outline: none; /* Remove focus outline */ -} - -.trashcan-button:hover img { - filter: sepia(100%) saturate(500%) hue-rotate(-30deg); /* Red hue */ -} - -.trashcan-button:focus { - outline: none; /* Prevent focus outline */ -} - .icon { width: 20px; height: 20px; diff --git a/Medarbetarpuls/medarbetarapp/templates/add_employee.html b/Medarbetarpuls/medarbetarapp/templates/add_employee.html index e69de29..085ea8e 100644 --- a/Medarbetarpuls/medarbetarapp/templates/add_employee.html +++ b/Medarbetarpuls/medarbetarapp/templates/add_employee.html @@ -0,0 +1,58 @@ +<!DOCTYPE html> +<html lang="sv"> + <head> + {% load static %} + <script src="https://unpkg.com/htmx.org@1.8.4"></script> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Lägg till medarbetare</title> + <link rel="stylesheet" href="{% static 'styles.css' %}" /> + </head> + <body> + <div class="create-container"> + <button + class="go-back-button" + onclick="window.location.href='{% url 'my_org' %}'" + > + <img src="{% static 'go-back-btn.png' %}" alt="Go Back" class="back-icon" /> + </button> + <h1>Lägg till medarbetare i<br />{{organization.name}}</h1> + <!-- This form sends the input data to the server using a POST request --> + <form class="create-form"> + <label for="email">Medarbetarens mejladress:</label> + <input + type="email" + id="email" + name="email" + placeholder="Mejladress" + required + /> + + <label for="team">Medarbetarens team:</label> + <!-- Fix so team options show up? --> + <input type="text" id="team" name="team" placeholder="Team" required /> + + <button type="submit" onclick="openPopup()">Lägg till</button> + <div id="added-popup" class="popup-overlay" style="display: none"> + <div class="popup-content"> + <h2>Din medarbetare är nu tillagd i systemet.</h2> + <p> + Observera att medarbetaren dyker upp i din organisation först när + medarbetaren har skapat sitt konto. + </p> + <button onclick="closePopup()">Fortsätt</button> + </div> + </div> + </form> + </div> + <script> + function openPopup() { + document.getElementById("added-popup").style.display = "flex"; + } + + function closePopup() { + document.getElementById("added-popup").style.display = "none"; + } + </script> + </body> +</html> diff --git a/Medarbetarpuls/medarbetarapp/templates/my_org.html b/Medarbetarpuls/medarbetarapp/templates/my_org.html index 7ec0cf3..925e2c3 100644 --- a/Medarbetarpuls/medarbetarapp/templates/my_org.html +++ b/Medarbetarpuls/medarbetarapp/templates/my_org.html @@ -54,7 +54,9 @@ </tbody> </table> </div> - <button class="button">Lägg till medarbetare</button> + <a href="{% url 'add_employee' %}"> + <button class="button">Lägg till medarbetare</button> + </a> </div> <!-- Script for filtering --> diff --git a/Medarbetarpuls/medarbetarapp/templates/settings_user.html b/Medarbetarpuls/medarbetarapp/templates/settings_user.html index ec04147..57f6e6c 100644 --- a/Medarbetarpuls/medarbetarapp/templates/settings_user.html +++ b/Medarbetarpuls/medarbetarapp/templates/settings_user.html @@ -51,7 +51,7 @@ <p>Är du säker på att du vill ta bort ditt konto?</p> <p>Detta kommer genast logga ut dig och du kommer inte kunna logga in igen.</p> <label for="password">Lösenord:</label> - <input type="password" id="password" placeholder="*************"> <!--fix--> + <input type="password" id="password" placeholder="*************"> <button class="delete-button">Radera konto</button> </div> </div> diff --git a/Medarbetarpuls/medarbetarapp/views.py b/Medarbetarpuls/medarbetarapp/views.py index ab6d92e..311c140 100644 --- a/Medarbetarpuls/medarbetarapp/views.py +++ b/Medarbetarpuls/medarbetarapp/views.py @@ -84,7 +84,7 @@ def find_organization_by_email(email: str) -> models.Organization | None: def add_employee_view(request): - return render(request, "add_employee.html") + return render(request, "add_employee.html", {"organization": request.user.admin}) @csrf_exempt -- GitLab From 87d65e08bf28e1e92190407dda450d6405844a33 Mon Sep 17 00:00:00 2001 From: Johanna Lindquist <hannalin21@gmail.com> Date: Fri, 4 Apr 2025 20:19:48 +0200 Subject: [PATCH 14/14] fixed add_employee.html --- Medarbetarpuls/medarbetarapp/templates/add_employee.html | 6 +++++- Medarbetarpuls/medarbetarapp/views.py | 3 +-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Medarbetarpuls/medarbetarapp/templates/add_employee.html b/Medarbetarpuls/medarbetarapp/templates/add_employee.html index 085ea8e..36c6189 100644 --- a/Medarbetarpuls/medarbetarapp/templates/add_employee.html +++ b/Medarbetarpuls/medarbetarapp/templates/add_employee.html @@ -14,7 +14,11 @@ class="go-back-button" onclick="window.location.href='{% url 'my_org' %}'" > - <img src="{% static 'go-back-btn.png' %}" alt="Go Back" class="back-icon" /> + <img + src="{% static 'go-back-btn.png' %}" + alt="Go Back" + class="back-icon" + /> </button> <h1>Lägg till medarbetare i<br />{{organization.name}}</h1> <!-- This form sends the input data to the server using a POST request --> diff --git a/Medarbetarpuls/medarbetarapp/views.py b/Medarbetarpuls/medarbetarapp/views.py index 311c140..456fa0d 100644 --- a/Medarbetarpuls/medarbetarapp/views.py +++ b/Medarbetarpuls/medarbetarapp/views.py @@ -273,8 +273,7 @@ def settings_user_view(request): def start_admin_view(request): return render( - request, - "start_admin.html" + request, "start_admin.html" ) # Fix so only works if the user is actually an admin -- GitLab