From b39f4b6307e00f9f959d6f3bf36041344d13ace6 Mon Sep 17 00:00:00 2001 From: Patrick Hoste Date: Tue, 11 Aug 2020 09:44:55 +0000 Subject: [PATCH] [REF] website(_sale)_slides(_survey): improve course management and creation PURPOSE Improve usability of course creation and management in frontend SPECIFICATIONS This commit improves various elements of the eLearning module: * the create 'new course' dialog has been improved with examples and improved placeholders; * allow to create tags directly from course creation modal. Using the add tag button after having created the course is not the only way of managing tags anymore; * the create 'new content' dialog has some explanations on the right side; * add a flag indicating which content has already been viewed in documentation; * changes the text/color of some buttons; LINKS Task ID-2241513 PR #55698 --- addons/website_slides/controllers/main.py | 64 ++++++++++------ .../src/img/channel-documentation-layout.png | Bin 0 -> 6611 bytes .../src/img/channel-training-layout.png | Bin 0 -> 6766 bytes .../static/src/img/onboarding-quiz.png | Bin 0 -> 24771 bytes .../static/src/js/slides_course_quiz.js | 6 +- .../src/js/slides_course_quiz_finish.js | 1 - .../js/slides_course_quiz_question_form.js | 5 +- .../static/src/js/slides_course_tag_add.js | 49 +++++++++++- .../src/js/slides_course_unsubscribe.js | 4 +- .../src/js/slides_slide_toggle_is_preview.js | 4 +- .../static/src/js/slides_upload.js | 31 ++++---- .../static/src/js/website_slides.editor.js | 72 +++++++++++++++++- .../src/scss/slides_slide_fullscreen.scss | 2 +- .../static/src/scss/website_slides.scss | 5 ++ .../static/src/xml/slide_quiz_create.xml | 5 +- .../static/src/xml/website_slides_channel.xml | 40 +++++----- .../src/xml/website_slides_unsubscribe.xml | 2 +- .../static/src/xml/website_slides_upload.xml | 66 +++++++++++----- .../controllers/slides.py | 1 - .../static/src/xml/website_slide_upload.xml | 17 ++--- 20 files changed, 265 insertions(+), 109 deletions(-) create mode 100644 addons/website_slides/static/src/img/channel-documentation-layout.png create mode 100644 addons/website_slides/static/src/img/channel-training-layout.png create mode 100644 addons/website_slides/static/src/img/onboarding-quiz.png diff --git a/addons/website_slides/controllers/main.py b/addons/website_slides/controllers/main.py index edad9c10419..916c27869ca 100644 --- a/addons/website_slides/controllers/main.py +++ b/addons/website_slides/controllers/main.py @@ -259,6 +259,37 @@ class WebsiteSlides(WebsiteProfile): session_slide_answer_quiz.pop(str(slide['id']), None) request.session['slide_answer_quiz'] = json.dumps(session_slide_answer_quiz) + # TAG UTILITIES + # -------------------------------------------------- + + def _create_or_get_channel_tag(self, tag_id, group_id): + if not tag_id: + return request.env['slide.channel.tag'] + # handle creation of new channel tag + if tag_id[0] == 0: + group_id = self._create_or_get_channel_tag_group(group_id) + if not group_id: + return {'error': _('Missing "Tag Group" for creating a new "Tag".')} + + new_tag = request.env['slide.channel.tag'].create({ + 'name': tag_id[1]['name'], + 'group_id': group_id, + }) + return new_tag + return request.env['slide.channel.tag'].browse(tag_id[0]) + + def _create_or_get_channel_tag_group(self, group_id): + if not group_id: + return False + # handle creation of new channel tag group + if group_id[0] == 0: + tag_group = request.env['slide.channel.tag.group'].create({ + 'name': group_id[1]['name'], + }) + group_id = tag_group.id + # use existing channel tag group + return group_id[0] + # -------------------------------------------------- # SLIDE.CHANNEL MAIN / SEARCH # -------------------------------------------------- @@ -617,29 +648,9 @@ class WebsiteSlides(WebsiteProfile): if not can_upload or not can_publish: return {'error': _('You cannot add tags to this course.')} - if tag_id: - # handle creation of new channel tag - if tag_id[0] == 0: - if group_id: - # handle creation of new channel tag group - if group_id[0] == 0: - tag_group = request.env['slide.channel.tag.group'].create({ - 'name': group_id[1]['name'], - }) - group_id = tag_group.id - # use existing channel tag group - else: - group_id = group_id[0] - else: - return {'error': _('Missing "Tag Group" for creating a new "Tag".')} + tag = self._create_or_get_channel_tag(tag_id, group_id) + tag.write({'channel_ids': [(4, channel.id, 0)]}) - request.env['slide.channel.tag'].create({'name': tag_id[1]['name'], - 'channel_ids': [channel.id], - 'group_id': group_id, - }) - else: - # use existing channel tag - request.env['slide.channel.tag'].browse(tag_id[0]).write({'channel_ids': [(4, channel.id, 0)]}) return {'url': "/slides/%s" % (slug(channel))} @http.route(['/slides/channel/subscribe'], type='json', auth='user', website=True) @@ -811,6 +822,15 @@ class WebsiteSlides(WebsiteProfile): result = slide._send_share_email(email, fullscreen) return result + # -------------------------------------------------- + # TAGS SECTION + # -------------------------------------------------- + + @http.route('/slide_channel_tag/add', type='json', auth='user', methods=['POST'], website=True) + def slide_channel_tag_create_or_get(self, tag_id, group_id): + tag = self._create_or_get_channel_tag(tag_id, group_id) + return {'tag_id': tag.id} + # -------------------------------------------------- # QUIZ SECTION # -------------------------------------------------- diff --git a/addons/website_slides/static/src/img/channel-documentation-layout.png b/addons/website_slides/static/src/img/channel-documentation-layout.png new file mode 100644 index 0000000000000000000000000000000000000000..6967033a92635fba7dfa217ab9e5980a69456e91 GIT binary patch literal 6611 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 literal 0 HcmV?d00001 diff --git a/addons/website_slides/static/src/img/onboarding-quiz.png b/addons/website_slides/static/src/img/onboarding-quiz.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab746f3cadd029c44fbd96730598f932855a5ac GIT binary patch literal 24771 zcmce-bzEFQo99as5+DQ*9wdzg5AGHkg1c*Qhu}0$kTez?f(LhZYXTv-1Zf;PxV!rv zW@mQi^WK?vX7_&X{pVQOQ+2AIQ>T943RP10i1Cu-B@z-6hO`t|1qtctPb8!#g{V(~ zCp}NQaDme^=MU0qsHmuOONxJiTVfXpEf-Y>a~F3bCo?1qdj~r+W@i&8Gc$WP+R?HjH4y6TXiniw)Qg?y$_GpTOVJ@ zQ6Qpb++{N|*NSw+dQi|$Tgv}u7W1soLqbs|ar9fHzed}09KT;mmJ3xIz)zFlpS^EV zTtBjq`_e^Xu9s?}&xhaP5!xp5OTA&)OqM}9WeRZ8F_#oP!e1tz4;A)WYJQ1AB|B4R zp&bE*?y8fj#9bKPTAuY)Whx#YbO=2|a#;-+48ZQAD__WL5Ddyn`9++m#+A++s)mLa zM<*Y#-{)ZHPfi^vox({&|F#x|suFH%gnS$Qo1%IA84lWqjUlKJlq+6iX_*2^P%s@C z)vK>Q`N2mNfg!N`JlDLHhK4jp)GP{NvXnK+HWz!4AjON%ha7ejh=QLZm5raa=k1p3a@4q+%So+_?Gyh z$ef^_A^X!e8Isp+Dmy;yJq0DXVsRH5sS0HoBxkK3NOF}}=VkmNSDte6HujUqg>WXA4^8GX{j~4fb$J{eDr2=UW zxOiBrcYT0Ls03A%9~O@3X-9uJ??xMO+t0;R7%#$Fr)}%qV{c#hY`l<`TliQx_`=6Y z^pgEclr3pi$$>BU)f+i@1+0jYqxo!?(UX^3;Rl+@vOJ24YA+ab#fm3x!&5&39g#z^ z2K+53Lo(X!uZn! z{YhpIl`)xuUKf)8*Mc0RrP}RpNp34#u2bacxF{$5CW6^H|*jv7% zwuJ(DL5WkSM_te>i-y*?_*U7CJg;T?9Q9Yqk@Z(kTlEXraByZ`b+5Y@O_6A4`@hR8 z40o;EnQTkp6xnH=WKjc4goMo}UB&U(2=M>rCd{XUH5(ho1k**m!6Rd--f`l|r&SP{ zUA*IW8>-J$?hCIOPQI%C-sniB{-I=j^*Vl4!cN#oVPT#4#4S!zB`iWZr9-2yxo z%2<5ASlJAplZqkyK_3BXCE?S&h=;kx)k&x*^$(qCohCB{IO(GBMhiu%qiZDa)Rl5VY5 z8sybKw|De?O-dH?6%_7QD?;N59ETjWLA`;!; z%YUa}`or6D9OcJQ%iq~cmZX6*Ro~h7k2N#sP(NTqLK4JY{78ws9j|V~K3SoC-rOqi z>!o5BA$AOW>8y23+v#s(FwvTTuF6_uf%}(3^;BAE0R}ej4{6bx%Ujv&crG@Muox*` zcDA&Sxgt)YzhXHdE5(=jaa_u~#e>o+PVuH>Z6mTAw?Sq*c)G*jbQ%;aVr`?6U_puP z?kgFmcyd7lc`$Vt;`_rztA5{cV)*)(!YMqOu5C`83%-Ia54YsNAd@5>!;|&r)Mlk& z$8S{rO7Ys?*JIExJgdn->AudM{RTzR<7ENpb# zTj$018aHl|U-OVgaL39?#j=$uufT}bIIUlSz0GPjz7_=XPmk;kw9DQ0swX=zAP?=; z8#%ttWTJB?fKUV#&OQ)g41ihZ-%BjcPcK&`%dT9NF7=Kwu2t&Bvq7T9`}))guB@yylSZ>F&Nr!H2F$3JY`FOfQnN|RjQAX@tw_p*%Hg|(}m z_D7MBEh&F*SCa#ucQ2^N6G6M)zRa*lXV$1<^6xd8fDn5oNrt=(eTDByhci>c5J4Ru zEJ^=tv)aJsEr?xxo2;u4BrfDOt4vmFwuWg8*jB%dEkPC6N#vxK;L-NitZ2-DHkKi` z)S_<4&B*_IZ}zxXyXe~JxkAZ|l5(_r<)05=Os|so?1-r50@%#L_uERe(Tq%VG0U;s zDh7unL0%r1(McLtFagXH;^wy9hWrM}-+n^8!O?TWB}xeO(txf^w~QOqZ8*Q4|Efw& z&h)rGAk}(aYpWwY#QFCmPXV;oz_UD!#&P~q2?R?0EeZYrnY$63H=C6s$o3Km#|zVO zf2mOt35Ae4dVO>)VR*_DfJ3%(Cf^IH8 zjS{7_Y^ZTO7-=6NAm*YCilWy*P}iHwT>fnVLoB|j|vMNYC5 z4tzVU1?Y!%+<-%7vOg*M+-?>=WK7q*^UQ=p8`|4=Qg@kd5N5i!H$+*v{p~;`T31cO z?AX?;An;7Jp` zDYJBjS4kL7U++v1X_LGuUiWZknab&+0?q7D!0`6WOhYOT&pnV^%yqZZ7IZc~xsFAg zZOH`d;r<;F;1V)+w3_3hu)LUG>#mq2CIcTgN(tUPK_Y*S#V$&uKnTZ1qslflFeC^K z0w)a-pvPDsOxRrAsHA>gIv$r|l^hS0N_Tduph)+~TY85iC^1o2Ysn>YZ&dEH|5jmB zc6R9C7vjfkf$u{UW@+w0Y|0p+;*#}Vjd^B_>jt9lZS zn2ks;xA44=zQSVE1Z<|CkDo1@P&LD1Wa#r`+PW<_G&iMrm1$_Q|9qxT*e)KVWuJzM zur%kOE0&=KeGra;n^wh*oxE#8R4YxpnSOyngH+ze1b07GIG1dIY}uD_n644t zAYNJu|C!ux#T)b4WwMLXzu9rN@m9Xf)mBK=Vs0I=ev0H0j&g3Iqi|QwZ}eRvh<-07U3zZo*w=Qpte z!FQ->3=Rkc%J5h0N*N;O`)#1zc{hdeG&}x7cJb|rU3q(|tU}sY_|9PWGHddme8+!YW8<}n{7QTxo< z2{b1vBjlLrKrfYoQHvx?IIQKm3U%fEH-i}1zbKZTn~IezXrmu9XfJ>5hD4_BQ`rm( zjjr=*51c5x*7Qns*Vb1yd#e&jLHbvjLjk3E+^4M^peB`?{jr9q*Dck5ubD*QQ( z_3tF;4VtC8PCv$PMXAYCUw2pHQ`iYPQ1$h8CC)sA^*Iz1v#&83YL1=y*fQ%ktrmt7 zxo-1bSQ(2p#wwcfI@Y!xF)r#<8tG=`3^-Ke-E-vk5!D;dW$z}Uh--5ljHJ~V-+N`o z3xq;(P@!5TMgzaXOV=oJ9VQ{>&$hZIq(W>9*cVyt^#-)l8_e~U>F{w;gI>jG+pJ!G z{&3V)tMyi2IISu_@4+qQ8*4g`pVf8$?fDD8_)!MoQP}R-u7?%Jq;fWuI}5?qX*RTNc-7kJD1i0~&hT5$Jjxz1MGk`4fS9%{?7n z=dCdJhD3<8@V+z=;1P$ehV7?s49t_TYDK9joruoJ?ifm4mIraXtJlm+=`Cl&)obiV zV;64DlXTivu@oXJ<^(M4w@+)6OBClXsN|54nmdH_IzJ~m7{W&Wz6LW-$IdVE*0p^) zo3MToGj7!YSJR!xo214Q9@NRRZ?{;Y-|*wjxs6<)A(mF=>sP{2w_zO0o-)7^acj(8 zh@1yIu7J4J62IG0%P0SZT>N;*J!2fEv4|(jz%eX+rHQ)hIV6ED+gTWKCN1wSEm<(A zk};Dl@SVSy{R2%csf$hvHUGTw*o?vfDE-bTgxgGFsT)oCV<#xry8y0L-ZIEuZAHNn zxr7sQdsbxhm7T%aBBJOe7CLsNhIsHK19=>!fKR>|X3#r&6CdT{2Xi!@>OOydL`r ztY*U?kBQrDcL_8IjclqVQ?nIcWSP3Om$Cy;>Ke5)TG2xgfqAO|+rj6p z6gF0Jr2!h#HZ8N-s)*GyF7#QlzC((3ni}@4wzwOWW%PKXmpC?Do3#WeROA;&Bo3-C z!BqLbec0OzZI22Ye_1C3^P@e9@K2}T51k8ITz;6DWWP8NFrJT%RRa;eT&33~kX*P^ zCZI95r7wb9boFWHFsNA<{j|5fMKWc99-d1!a>C?wonS#UxU%LrMkL5cf-XWXXn}Ra zj9mB$BnuLO3E=8VHY-x6hm3X_Se&oK51r_X-zekDxu&D|Hq2iN^JY+zik|B?1}MK4 z5F5gd@%FY&_2r=CV|@5KhNi4iP?W8tx^fzoRw*dpH$oi+U#+>=HRKZpuW}~5-YV_v zb@i$ru|ALvBts`^-w981jib8T>t4=2S)*0y8oJyJPg|c}&1@B-!10uh zq=}x6m4n7W2A)!l`-~JjVfpGw<4rn3eB~LE;7iXYz4EX6U+s-VxP&}?i(E!$T4(gr z)lqhSR>gJaB+l&T5af-z zLq&eP@Ib`|PCtpCKHhx}L3&J{_Er=)B3b-LK@h+Av!PU;o$YNB5|aJ-rW1e0$COx_ z2a9b!-rg@>5&fw!Y(Jko!lm5a*{RTP;kNwqgD%4(TQO5uNLw6;>ajWx^SPNU(`~;! z4j))MK07;W{+5Jf)G+7waD#Bi<_F^Z727cJ!F zq(BV8u?&x8v_!KxFSxA#=O#TM;&vYcVExaWa`%HpvfE|a{Z1g>KP(*nlQqTvc918x z=)94G!NXe0+A-Wuzsc>)^R8@8f2P;Tsc*0@ug)&98sVFGy|}bZUPujC@EP7v@X~yT zSwz>bY4mS0F_Xx}8rEx}J2gLpk4+M3(YS6-8-$W)YQ*E!TYWj#(eZ=+8O1D*3IA|V zVGqwzShE<~rISOUdhPt>cee{sQx1z;mNv8=%e8dvi|&iFt*eq&!^D|M1%exMcnLt) zKq~kAguFc5KJ-w{=WBOyHpgSfCBh;88@6{a$GTqDI5I{4;MuiHNCY~+5&y{AlgsMe ze+RN@`h55^i-BZ{OFDX6&Sw$_LU%IzIko;GYEO~=l6+sJ1`orh^#(GMQ)ax ztxSaK=I5xQ_+{)qc~yC#QHo`FU8djd?_d&l>q9T2PDa*OtzUV7+>p|D&iSxeG&feT zz~FL$h69&G!>6$Zkn4eLqqt|O8|)KPllt^Gyk-3+G>Nx?Bv5a&@u{-0*Xe@QXMfb) z{{Hz+AGd7wFC$DSr{x*=K-lL7yG|sqT00XaoF3(Sd46Jcjd9v|(K%I-$z(N?U*)?v zX`Z1$H>gU74cE*>v{}KUoEwHvJ2+*4CL{l|=S-P_eOu0GcD_CJ5b8C3G2Rg{RpK(W z@4M7|K23iY*)8JzOj3?)qoDoM66_gJgUv7YSlDgPKZtD<-1*#y@ckHRdoAL!Tq0~} z+kXdRW1R5wJ6`!^IE8n`t_hoMKbY&@(5&Wqcn9OxIyb#p19Eum1skHL`#hV;0cY?j z(%DS(QTIQ7p~x3R`nSvD<2iNkfcI9Hh8GB{VB8-i2@^@JP|!x!V{+}Jo*_ix|& zxV_2{0D9~n4$lRlt)sC#S@DopP3^{{*33z)a8Iu{U{(r|DlPV(8~6QybMz;l5~JSC zLUbM;;fXL`l(ZO^l$1F%?twtt@VOrMpZ*0w&yZjFK79?ikfTWxk$j0Z2<%zr5!vOd zg{!)y`Vx1FOyOP(!1Q(;AwtTOv;BUIRN(HANNfrdIR7)x_fMSSe>X_mutJtqzxni2 z$)lT%!aI0k+#CHCtDfZ1gx;-BqEC|E1DF2|0p!2!tp16j@}Kyz`C+Hsw)m!|#QN~| zJInr?gathbz^K3F4vP4Lle)h3_f9z-92{D{`vVm3Jg7{e6tbpyI46(b?0X`{ydM0h!a4sIF-74%ouk16SXVd zFZIF9`F3`Hr@>*?+SfcJ%tv6c;Q>nQC)nuLb5-d|b=%rzVCW-Ew-bNwDgI10dm}D? zI+fN!7w&D6q^d=NAZ^E;@V9=ior@WOqULk{%{w%xp6@-Z`jSYt)So%Ta~?gP??D6lvZ%|0Go|MR>FMCl>+Kzky^-Ke zfz5XC({H1BexHx$d;4AGYu;p#x7a3(1eDUCm*d4mAt-wCD@fipZ}30*Cc3u$j8l)T zvAnn9A@hb+7aQGz8 zyc-VA+4kOwz^9+8oll;=5P1UVr-vRpRTSgdi-L%NkxNYPkp0`)&vWpWC`F1@pke(H z&RC=MdEk{4{8*CJ7K|Ygf*{>c@Qiu+`G>a_dkeNhC;LpyZ`1Qw*=8%HZQ)f8Hl? zo%s_6KzY4BHY{#w@&wWsZVn?EjmQFmoawk??YAc(LpiUoLLyJvbS@7cvpLD<-gNrTPnUQQPM0HCuXTMvGgrA{h~y zD7>ruYG5&`&FB0_OdhX*5F}oQAU9fwB8k&tuE=`hS2-?{Aa^r|C~CaXJ-Ae?;6l%u zOCuQyJ;iUZ(xoYN8SySaOCWCxHXi5@2%af6x&RgLZZkyTBm_QF4fVd)#!!5yDl&A@iVm7M=J%?Q53|7 zg=(8IMqIi?Pee?Qz780ZjAv82EJhH8Xo*|l=YyVz64nw@rme?5qp*|mb03~}f4I4e zs+Jwn-zIyWwWI?2YA_`zY+E)q8Lh=fE7MJvBRO?DWI92j1uD{+$*-u^SYuN3RAxrk z2#%7`O>(eq(=BLP{n@`Iy);si+fjT-NH=o(SMEe&Zkfi~N~vpE1ynq96$XgR(Ju-J zJ$xLloXy0-3Ne_c_|o7T+z%J4jY~lPmAP78O{Pd2b-yMn7J~GHyG+|6l=|Ht5){zChG4sQDE0%fg6F9F~r3{~-)q1%~P28Ev z@IT7H`3-huytVwyj*UQ}_Hsq(7LZ-3zH%xTzj8qmUOD~^7VM_!LpwPEob5S4*yH0Kk#_J~L+da?m}I4}~@ zd3~-7xHV}H`N!6rX8b>4!M3B#z)hgzTV9; zB%Bb3x~+-rBIOar6okiBtff`7r!pE&42Ot3K`s>iN}aHpAcDp);xpuZnP!NrvOmS)JMFr`@t+oZ<8}&&x_Sn+33W*dTqjw?)OlyU}@b=i3weo#0w>Pqsh)( z9?ZrYq8NT|Vf!FGDR2a*H`sd~df9l$BGmiiTJ+fF#4UquHn<;nf@JWRfUP1obNdh@ zX(PP`TLi==C;B>th@ST2Q7F3u*|)t@ufCdU)>uwK9okCLk%KfgSF?d2v;tuP=A-n5 zVE(UCt*dEg`^IU_LmcaSOm&C1G%8s?s=_OTQ?6yUi>dH6ve;?gs=TdD zpwQ;XDq6oUe$N*3>ys@EKfAeelM=*ko$?jBE7_I|t%yiOSPUHAu1NOu1cwrXaEq5E zyLuwODWiq=aD+gT!zC>Iybtiz1UvDpo+oT?q0+>KDwAC8x=5q2n`lGD@d=B=;GUoP0!Cn293EwTs2N%Al@NNtW=~2Gl$fL7J zo8S*t+4}TW9DM$TrVo$(TY}a*Q6bO=mRg&rGDT^b>mPg_(*r!zbg+h-+Ry?hIZj1l z^wMskdu*)x7Ju)H^Vpg-Oi-2F5vqdz6aSCVJN6B=nZte-cI8bFG5w>-+L?j->%b(} zx#EG;>r%brf=ER3!-PX5Mm*hasasR6%>#8(#E>;pj<>ef5AV(0+ve_}Vi7XNB;WmYx9U@~RnP^TMYzVyCnwaNW{ve9BMOr(!y z1a=2W-;kj}&y16Ox)y8X@K9GZ)&SGbq&)Io5iz9^WK0sAJ1*Zj)s7===x_Y&&gVHo zvc(grF7wm`AOd)%ZvD>Nh;iRxK^PB;2iBVZMI#5~@KgrKS%vCqY*KfRFk{rh*o5dB zu@RvCJFL|ed*JOe=V-IZu|Uq#D|8Yk^tD8UO{eEF6AkUG1n(w;EOdomiP%a%N%i- zISSwK`mJ6o9(gsOep4Dvk6Hb1R^pG^Dm)vXm7XSGNj3F;q`8ve5gK5$RNvRENr?Sf zh_4>$cVFueORdC$rbg>AF?2S5e-z-n z#WkCGFaCiMs9m>1{!)-u{kfyIE0O-`(}3uY3I#dn5bzH**-$3Q zwghNzF+5qSP)Rz})S4z!E@A(PTTO>0l}b=UlYd9yx}AQhwcdIrCw<6KW5F-K+j3U) z6K)z0yF$r7;_|F}Cug>Qm|0A4E?76MioDzo z%Ku99t_O@3TE?sIaxwix#P>IfDhcBddOE+fL>Gz6{`j9_s*e~<(yAOOh&s{x^F+wo zh$J8OQFI=;qwi^(One@_y)W?+%M@SpOzFimJHle$ex}ngg-BEG4+A<@x^Dj$;RBhkJ zMv@bYf)iD>H*BfXDrrrO$Eyen3B3hbgN!0?&Kpu%`W@gT`sN}v90%;7bavV}a6Q=o z>yB$Rw3%VDb0@hzZKuQNP$_PcfzJGqO3@}>=bh%kh^ag<_?ilZlSw*`r##GoLFIJ| zgL7>B8yfA8XYNVUY)83g+dQqI(Ouuw!auOsFLZ05#8`P)D*KACRwW*ec5!V|C^Z$HuD-}&l&q4+OcA?qF`TCb zR@*5i=dWYTqdUm_&}+#5y*HPOKNLAjnH{8?(D4CmT09}}PL!-9_E=jyZ&4aN%#a>x z`58R-%yEQy1z+*cJkr0X4O+Z@3Q@X!iRe{vYqnAegB1>rdEa%GGqP27MZL+f$9I}9 zGc9>{;-P_$heH9uIuS{qt!7BPl*#Meo{1$0Q0t_tmsz37*p_8{11`=D(zw8W-lZTN z_7WRACQnaQoH|t6I-%C1*pVs^oDVQn$+=XWh0{tSUvjJ1j6n_dT1F{ypuGfq3@1vrWi~F;^%FF>~S8Ts7Ws>yQ226-gS$>6t4t0sN40Gs>FsaocsVv6{{7+2y96?NhC z*W>=}h1zzTdO-;Vs)1ipKRLS&hp%0`qc$G*X4-ayMZcd06jTanIb;&l>99mJwo6|t{_po@PQYD*9otaIm-(A2%V*?MtA z7#eCV^@hDVCw#Kn5r67s02p@7dkr^R|t`2FUfQ|h^UL}&$#OVkPbu7rJ9NigK z5u*O~F0PH^r4_CZ_kl@KQ#aezYe8E>B(k)mOq+IkV}F}wt+N$$`&21J1==;t&dqnt zJ;`YIyfr?%{B1h5VW(TWG`-BjG|YOgh!ZODia71o|8g2y-kNkMU6aOLMKUt`6v=+p zCpun02#QPiSr!l**z3~X#+A>1s*X`(wn^^6XP}Vd&dHy!q>;oK-ojBCF2*I3?fjmr zu>rdtlS!Sbn8QTE9Hjwfn@vKb|1%_C#6ct+M+46?en)lt;vb6LG`}&_lRzOIOLr z(A;8d94=bE)DA5JVl1

z4RMp^R#20p>K6dglPP7p2#N`Mn?+8y@?=Rym{@Ubs*+mOxn;2*?+_VWf1I6YarPbk zq4izM5He2ybcC*2jkMWU`&Z>v9a=>@n}fde0Ii#y1eYxJUxbgF&9I2_Z(I?Ej=2cz zweO7`V6Nv7eR=FGRk}W6cC(6^QajJjAxo^`^@h9s((hP3yE%z}Y1rzzfuhC$(KCtOH8d=R~ug$+?{Q2ZMg%3Eu*G$kD5R(M)m3CAUU@Yv=lkP3zSR9k9} zql{Vc!(5iG?=n|`g%=e$U)7;#dJBl`j<&2O3!gPeGM#_;?g9M2z?>>nn~o4W_lCiR z-K(uo`l6x(vNMmuq`dx5RL004;TR8NoziF)ieW9)Ki->Z`75#;Lxw3Z_V%HZd>5~c zLHYCyZs#*J!4486-Xl-6Uk2XUgM+<2y^!_o#0tfLb~S)wv$#56yLqJ`Ht~hIZ_!~8 z72un;zITA-)EYO?K#KU~KWa$ABfE0M`3xK}+lUfZW(yHYcK=y%tNTx%X+qDnnq8vDL}{XFPv*w$w& zV&(5Tzio7AR{-3zh?2HEki$cPc^q>TYUP+Y$jYEA$gp3jLkmhZ@EQdX3DMrpZ-sHo z;|NHeFA?bHB}yd_?ObhPQ=6Bvat@0)yWJP|r*8w($Nb{#ZZU85>yU=VkvME{B&JzE zr^Of^^U@R0()ZIyyk{O+=nbswx%TurF_+67sPIo2Cr%07mL^x*YZQYQB$XchR}?H| zo>ZzeTzuPLt-|l6FVZ`@U#@W5N)zDWTq)|bFY7r;&MXlh{qFx9{Ih&YueOppqF*a> z;ycV^l)fh3qJ9%I|66f{658I2^huUbO!s&-k2#Z)7uxj<56jEhTqXv$;W9LMM_M)Y zou5pIXCkf~pMr3^EW8ElXk8!rv{^L@C)jaDl*@`Z`J{*%mR9QVTx@4!PiUB8wAjN@ z$0?D1?6gLT@Owh!pkJy zyQDsQ9-L)0=gbXBy;)cPd8u!>TAKQ1%Ylc0FrAer24vs;5qM(l+LObi(?{k!>x1(y!t!e5D^|ELU z_mgJyD-lSOjmmOfgtjwGZwEU#%HUL5VR+E1*+!J}enruuOZK^jzP7Y-@}v(&1YKqu zode?7G3%)=r0?oOr2G$(HcNK{lm@QjRR?pwDx1;E_c8jKD#aWp@g|8D8-Dz-CM-;; z;eL@umk;q1R>kioCV20t=$J-^5gdI~C%qO2Gwn{^&|WJB`Z4X`n4NRmOn4rtbQhk8 zPulV57-o6LZZlWfy=Q;XsuC7zwjBGzanlCT_ ze!z|XCkex`aAT7OC@O~(PyX}mWdHZ_4UfZODZr;#S~faw3_mM>WN8HT+Pp5#kB*4n ze-dr?y_?nTk@YXEsAzZFoBbgc2v94b!amohrWlVpX^ivD`JQfr{oU~ZD**aWO-=3a z8$1nKuz$Ea@I#1g0@?W^DuMWy*VpIU@RIWK@;0O;Gfd=x>h_z31J6eL$ErzrEr-%+ zCE6XRvp(rub2_?IZ@4vZC)*U(hjxwY>9uq|p}LOR!E=jQ1v zlkyuC4L7GgUzX62VTz|)vx%i^oug?cDHIho!d;hw_-}ZaX$;oy2>VjK8w6av+SLUN zur@=&9(BBro=l>ZXNj3*?emt6dsTzS&W87*qvMKa8?Nk!M$ChQf>aqWm(*?g5a@PE z`>pMG{{T9-d;;5^12x1zOH&VS1lA3h}Q9? z^>x3rrt8l6t^HF`FziXrV*2{SSyuJ+w|Zmn6WsQjA}*l4T$HgQMCY#>t_-<*D)wN$ zH~D4j7UqT1NdvHCk#ET!ZCM?6JqZq22mIG{O|SqnlpyLMDN?Rn5ghoNjFujUz3U(` zFxd9&>X~-I=@cnRujbKq>(@y-7%zy^qH!LUNuFgD-79WAysAo`#mohdnWL0yF3m{R(OoC zU^x8;QCC$FU^cnx|3mz~AGrUuatFKrY_W!4Z>If_#fH}53+}piz9-4_c-4Ek`e=8PXzQ#yvwCbtf^_g22)=q=0dR-iE z&tJITI!uq*%~e;|TjViD3W)Gp(SnR^Fj*Ihv67RL>r8adn@7)35QsA}S@5a;aI;`0 zeQLeM-gIJ{m75gYA{Az<3t$-jh+;rx#&C6g*ryi8jtOrw7^r`!erI$xrn$8nn~a|5 z?R`1ekVwkR3Mbgudf>eqB7A|16XWpLX56sR7j~SoF=H zTjZV;ksdtI@DH(BWpDsJK4u;TWIXAJYnjZjSMA1sb9rf0w0C{@%ot53dU(Nq78vXrx%r z6#e31ssF*i>ES|EOk9Wid~ai5a*;Bdq-{%jjY4Sun26KbYCZRDm+yo8Q1tf=9fMC_ z)D^W)HKEriSbo=YcXK0t2wpi*XfmI%RMH|J(C=3&<~Bqd_0pq6fIh!J4;#1gH3C-` zB5SL4$~il(&tAA+nGMI!oAymLz}txA9=IFaC#NP;AF8bFl?QO^1HOE9ugwWbEv;~P zn7r8^!GYM5;WzW{l%n=j;d1Q&$6mCpJsSR9_1&?zW~3p9QN8s%?8 z?myB?dwE}N5Cpy}0)oDUJ&<<4!NIEFl78RZth?)*iK!Ye*(n?#`#MzJnMjAT1TOY^ zCZ-US)&l5b1(_9w(_hGH#9QsT-oF>7d7lAoD;KHda)zJ5Qzb*2VTzA3xn{#ifX9c! zmh$+S62k|&S^b0UVDW->2M&oZW~5MWXvpnR-+8L$9Aj~QbUz1^WlK8Q5#dFWV z4gpGku8RB+_llU77s>H~l5%g%7i;$8?{!SR4jSB?AAYOw#x)@Mu*zdwz5K8@cy--; zgD<<3!ErWH5Az%2vF(?gEG-L$M+W>j-wDhlyD9%QoURNbafKiO0+7d`i=D!vRA@zk0_=+5v^8+| zld2%_$@Bj|k&c}iB*(99kh>(C!~x9**R@&r&RK)KyQ9EB)kWePjt2eyMBn#jC5cd| z^+;)2Q~mDNt-`;t0JX3cmGZlq%F2*69SgwvO*KRY!}qd=Tid%e$v_M9%G>!Q5v9{p z)jP;Vs_t#J1@rBSDB_!Dvw>^9)N2A(qkZScWPc<_B1Cy@{0f`A>s&o4K~8tujprxs zA_nb{4d07D2$91rg=65mjdU7MP8861;&9S#`^|99=k8oycW7i#sp`OIHm*(k=X;OS`K_ZTYE5=#!@o-=cLrx`D_%s&8h-z)*rgMOMSj`Z z-(QWvsl>Kl#)B7fjf(?+FoAnrH*N`AoWCYb{w`85;d`23-Lw7uUS5D>U%PUr&y3<5 z{(_eeFiY~)Z59#bt#~jt(I>0;H96ypb1nRP=i6P?EZKo!G|PY_QN83@F-U+HCbo`h7wDLZCg>@N)eyMQS&9ai+e6bl&GI+u;wvt*x zB0X*viBvFy;f$ge(^dsJi%=oY=pi=fm~8g|2gj7PO{sl@LQ|4PP{NdH{HC4PQ7LH=4;U1F zVfLBeEhksudr|Oev-1tiLZul4Vz;oZDS^nGZ?@j|vS~;kGdQYO@!69%L`>GOB>UbK zP2Qyci2c49;-}Xr14a-&sJ=dVlWzlz^V+cms()eQ#3$}w^_%-#U%Tjf7=c+MQm#AS zfhIkT4p3z4xp$?oY@E@4O;s5B_z1-q4uHSKFs}C}Ll|whAfV^r)_nu@oh`!rw?b(}q=zHSRZ02|8Lki>bXuK@G360xTG<$d- z`XF+l_cg%xuKf03t^1=grq7x>q9z&TY-)ZdIlO_a^$o{WaJ@5gDu(yl;R@aoYbm|= zk0VG_cfpU;;=ngBgILSZr!DKQ3EKzdE=lT-{;0%p|7-(ny2^Dc%M;iPaoah6dRYL4 zS}LtFzTFT>Nn9tq+s{w#@I8`EV)wcz&CngdW%CViJkf~S*?gM-^LvGVgBgJ)_ShVa zvj4Ro#}f59y0M9j;~9z<+zkT~2~v}RzmQ)uzoHO18h2`MW~^_Xy$+dU0c9Hi+XYZw zdC2gJ{^=M>jfxjFM*aWGoelrB zhyRcEL;P#1|5N7=eQ0m!zMs4O^F;J+K7xJ)`1@O#dYGF@!XQoxtop< z2R!*({bYHbTl!e}q`K>5p+%%VS$f`CYu)gK!EP-_Jx9;v2|GufPQs)OKEA31*#2pN zC@L*!Tsm#5AJR+I-t&;z1BxSJuO z1a73bU!eZK4kC4t^}>>39%4}pzd&hsik4LR8f3}U?@KX%dUwuDu|dcqixl){B2)Nk z$BzQfb;r7mE$;wUJJY%x`4!`tJ}M5*=-%gnr$N*jQ?sNC!hQvI!0h?d2***G|BMSo zxQl8h(GMh4WvZVcfg)PEc(Wg(Idwg`7Rj?%92N?N7Pi|Dy$+dzl$YkiY=E7#lN5U2 zW|zbA6Gag{vUCl;9`^;13i+DNS#HZA)uh(w!t+&?u@YZ_oeY^LZb?@GH*V%FQxq=jSji6Z5d34Ljo&xOi4p z2n6~rR=HfU=Io~u!yFF@NMpDlqNQxEiPd^*Usv+rvZH@9l}dC!=4wRuDcN41bm#o_ z`9_!*$y`lOnJ%WM<0yOVK$w-%6LXBYQFQ3w$1Juxd@OT!xiNk_adaUW>;;=6>gVmz zd2fFtEcO$7&d(C$a0vAxMr{cVev!&Yx`Bqa{{_=>3xiSeR|uu{3tw&QXiSUnx^$Xwd%_vIb@|-g(bqeoVs+b)^Fp`ES8nS2cxy@KfoQyR$(N3|?3fKu*W8I5_wgv6{?n4PFt5((b zz$m|jOcCTFw%{Rt#kKVJ%M&H+n?|m<;{lF`Lpk{Z8_*D(yH#&w z52&|<^YhbyG?(QMee@fTNC22-POGE6R|(rt3z@fC$}TzUjJgRkabQUBWdj4^zEMV>Lkl9W*Zcg+WH)Q zlv<`feG`J!w|y5WIc5Cs1qdq&1-1hTdXSHFz3=Q(GJ2)@*GEq~LqgWwsFkP6Xlxgj zwpQLY zku+`TR66xGI0b$iuED(El<~$^!^1eUeee0Ch-S&X@Wzx03SgsbqCu@whzOXWd>>wx z+NM23g_V;O#S59R4+s|K@Y<SZ+RMmXPfLu7T56MmGFdAW-66jwR<+?{2(&&ogNolxHfvoru!)S+noQdp26 z9JzV_Lp0rxwVUBp5i>r(_s(I=p}o;p4o$7uE#}R2azU^8#-Wq8Sa8Lr6bq5EdCQqYob%$W zWCZp)xA?-ZUnbT37y}ufzf}}cXem4VxVFt2!yRcc18pdq_*~3Qv@OUzr2NH>SR-~D zzUvv+QISX#+WMTRr!rp&na2k7^ZJ$lft z%tmLP$A!DDRTrK&|sBhMEv~ekeR1h@&24P)}&*%O@M_1p9l*hOrA&~ zt42&M4fl7qe5s!ChtK9P&P_khLPV|Q3s_a$t#4e>Kj>o#LTAFCE{`w^qix5JeBo?g zj(f>6r`d8iv7H@;r_>~FV{p%M@{Q(|&s{6B>0+h9hRL8JGUgm{@etVf^F^g)2%_z~ z>l~=H26}?gXrVN98^|mgXU)&m9eMLFBNfzJg_h8XFk_~NQ^cwLAko55~RT%F1|YkK1qQue!;Rr$TO~31ZzD|)&A&` zf4_kA0$7J%rA|~CtGl0E$f>Y551H}ssi~>^|1YM(0~gF7kdUAOtgBGarmpAgyrVp= zj0NKVK56J(`H_XE-q|%M2mhNQ#MWuUbj0}rw=P)D^Id4IVCCTERbj1HFx&8z9 zc^Df)GC-)^|N68e>uuDucQ#o;TbzDXCW}p;)cecVL&12KWLRtzpH)>=ElNrR2r0Co z1==CHm@^h1?ghtCDj(64aYJuH<^qCd6^E{t zg0mt&DPSrYVV}snBY$6e(_OyeOqROTiw}+~!vYZxT{n ztkw7%MbK;4z~(>vmaUsJoa}&dZjE2>M;E)>Y`F_Jcc+6{#vn`|?O@p2-={&b0$+!j zB<&#uk4*)XX#|+doAT=Ry@&wiH}Bu|p7u#JP05kojfDssYK?@r*u`H?!!eCtx612o z^GMas+9LYqDG!F5ZF^5=11IyAPvX}6%50qHYRcfej!e#p>!$Nkq+>QxC2HcYSO(?h z$@x}o)H37B^cQsqQFWdy0vHdEJ(g`bt$u zYj-eBNq%op%8m^3h9?E&`H(C_w&`PM%(oUQ;G%>tzzGfvEo{1MfF973-yd%X*(#^?N_5hL>Kg61|BSEHjo2+pp&nPk|ri zwRbKCs)2uVR`jpbb{+zxYdI_S3PN{hM(RA16Mec+1s$^5BfSVsQc3$?->O+$$c6c4 zkP9QwJBX0^12+-77Z0m)@cV{sBEYPIA5Dup=Qey zZz?x)n7yb*`o7uthN~l=LN{~p=cHaHl|0@UZRn~%_F09WxT!w0!re=ChmvgY(mMoi5m4EUho*{l?A$l#scTq^?)92T*ktfjM zwIfai3BAY>^`rqMlXX;`ac=Hw(x@*`+f8U=Be?HLe{{HR*@+CP1m@ux34M)LMx!(QE+i8LOwm*$CWx);d*1`R66(Vz|OXSQK4-c)j{Tky?;WdDV6Pv{Nqc4oF!T0 z8@`UOM4F86eh_;&1Oq1fznZ}-u3yKAz42%UP^X-aV0B$%owfOS+ZSk@Qsb_bJvxHn zbXL>AhGtmN$UQfe6C5MVGUS5Lj&tiGnrZQ8H8PbigcRA*Jag5zWI$yd=ELX)K*U)I zwTSluo1whFJAS~_lAD=C3&)PtCN0u+fFERFQCL^7zQS&$S=7eubcZa~SD8B_BF-Iq zjr*3hspD>{T6Bc<>G^t-Qenyj+zeVgfr^TZ^t&NJp4FS%UEb^-88(d98ZLL3&Y#?G zZ)dvV)kzWI5Ppo@NRFu4M`t4Gv?}}7oK;Q=Cw-J9)-!~j9 zkyXt?S2LFjaa{Ff;_H42N^jc80%hE$3MBZs{5lo<^xJrk)s@>>F&jO`x6JCT zEauY?-fa!SUMpBZkW%k@5&uYBq=}W_7&5%_TAkqu~Hjs@gUC34yGS`%!Zl zD+NTwzZh+w&u&A8;gOOAhkpz#b%V^`%zIhd(NZtURYOUiml%}eAaql%9lw!`u+l8q zX=Wfne!bzdU_~Sx0}a9k7Uu0TL_pdYVO8h`#H`6h>D^r|k%2=AV7=w8gOD&RO%Gk( zJob0mKEJ|Afa#rk4iDRHYTaDq2!Q|Ia4X_s4k3UKK!U|jjNB!^0F}^ zU=T_w;3I%eeXje4Ffg!+7Q|@((RjAsYD0EDvq`Qw9HSm6`e^IL)@oN>!C8qjKc0u& zw!j+=5vGrkhqhf-D;}Q%%&6>MzABpxq`2{OF0o@7^PFYxvAp}c>>q$0CkviFm<#a$ zzp&oU!9O`oBWZbjr>ZvfnYIrhwOB_I|9Lg9sr=2=eNHC60vJF(AhIp6UDa_l-1^Q*iI{&|8WkEAZ0CN;9ibpj3JrooUBz z_&qj$Z?`lcscN(&VY+MG1IeYxjr`W8HzoQD2HYU)k(MN>UQtOe<@OHV*Y0nWYpaz@ zKAvYi3oFl|Zd zdx7aVKTIaVQKp{rG~xsBiZ)y#~@N00S&8t-yU9Z4*Np5j`=!q(m>+GK|UMY;TzZ~jk zM2yrz!6Ve&2Uwwtn4k7!Czh@f!mQ0Dix*m>(|HoE$-@af%yMz?Z`{~n#wcUup!{-= zA{t`p>IKak9=blMNkV|w*EC-{endl@Svcq5JG}veYd;mx1AkvLf&U`SuCBFwz$5~` zu{hDx|3ICr&{d(*k~pA>A@(y;26~})p2n#8xxgO$*BX_hT4rA9C@@oMCSUm5mPMYoI!fd}A@S1)VM-$uRMPF57qhuCUFhbCP^=XN%4S=yb0#W8JEeuX zCYP6j3GAj4Mzz@UJ|o96ABPxKvq6Hcz;1w0g(hw{Z=c_H)n^P!v%~>8JPK7jX-sb` zX(qo?J6TqnD9A{HC_R^B!UgUjFs4@Apa-9r3-^)XRjYsfc*kwDde7q$zIbDvTWK*X z$ut*6fH;9e1cm-(C54b9`7CwTIg!x&1RlYc(PBJ&w{(6ERws%ITNa&<{chwa*Q>Qj z_e?a)^#tgEhs%ONEvfv+#eU%UI7wn!m?7TVkJ^BXqvBXmOrVgpYN4Hgi=5t6Q1+h6;O{K?M{?eC=vv7NhDU|(Dj~Bb-j|E5z;z?8Zf1^%y}C+C z3?6u@SWK<6jUq=bIKX`Jw53=S{&4Q(_w`vrD0UeLHopAbJc+PpBx5pzN!n+Euq)_w zYLO&B%p&XG@$ixFE{bR=sV4WhY`k!=UjtJ%;Xrv7z>){46DGL$6ky3Igh5mW?NyYBwalR!gWBp_?v0 zlO_afD)?R{kp0t?OtX%S&Nty6;6W!_H0w$Dqh)B!?uVrVOP#IJVEW4y|G(xH=<;R# zgHXHQs4aHh8M15z*Jbi=*EdXHXvfUXSLTG`-1dD}g%4Rupk0jZ2Zkwg>MPPnC@Ilv zjSpyTX<5ok6;96wgfjZaK@GUR6>mbQK2_+qQHteTeyA>Scpe=cqUDBqVPN2`zQpDU z34A;J+PfOaK+S<&ETOH%Pg0L z8)sf+m-4xOVr;Gp_7C1vnZ70)7G9hX6A13H(WjOnECL_TxD;jUFt}y}dGB@pc@s=P zoYQml>sa=F###emjBb~0Xplf`o1!gsEBU8K%^6*g=_TlF38M@{%*a>Nx9_xDs{PKo zDn275Z(aB9SmwWVUbz3xEUj?Q571b`VW3>Q#PeS`u(HU;&5R({d4Lkb9@aqv9nL1y z`3GNRgc-&4H!iOayZ@^Pc!u};ba3%JLl0-dk})tk+O4T=2eariGUmXw#!ODijFP=} z&|?(qhzQwLo_?kxe#pq-2;1tjw&q!dwA5oH`KdCZV$w$)$bERQ;qXW1K+AmflCH1{POjE)5#>?V=h?m4;?!e{t2%7r zkFaSKx%>YmUvoyq5&u@(d2|o{aoNd-imhd z1r|V4|LJ?P>;KF}C=g)_K&7qnAZ+PQ>|g%~;3`l&d`$j7D+-}8Ec_{LOOK|!u}=f) MFLYF@L9fI94G}j9ZvX%Q literal 0 HcmV?d00001 diff --git a/addons/website_slides/static/src/js/slides_course_quiz.js b/addons/website_slides/static/src/js/slides_course_quiz.js index 57bedab2cfa..9b3c0ad76d6 100644 --- a/addons/website_slides/static/src/js/slides_course_quiz.js +++ b/addons/website_slides/static/src/js/slides_course_quiz.js @@ -567,11 +567,7 @@ odoo.define('website_slides.quiz', function (require) { } this.quiz.questionsCount++; event.data.questionFormWidget.destroy(); - if (event.data.save_and_new) { - this._onCreateQuizClick(); - } else { - this.$('.o_wslides_js_quiz_add_question').removeClass('d-none'); - } + this.$('.o_wslides_js_quiz_add_question').removeClass('d-none'); }, /** diff --git a/addons/website_slides/static/src/js/slides_course_quiz_finish.js b/addons/website_slides/static/src/js/slides_course_quiz_finish.js index a20d558e368..8d6d11e5658 100644 --- a/addons/website_slides/static/src/js/slides_course_quiz_finish.js +++ b/addons/website_slides/static/src/js/slides_course_quiz_finish.js @@ -24,7 +24,6 @@ var SlideQuizFinishModal = Dialog.extend({ options = _.defaults(options || {}, { size: 'medium', dialogClass: 'd-flex p-0', - $parentNode: parent.$el, technical: false, renderHeader: false, renderFooter: false diff --git a/addons/website_slides/static/src/js/slides_course_quiz_question_form.js b/addons/website_slides/static/src/js/slides_course_quiz_question_form.js index b2a6df8e009..e134cb352e6 100644 --- a/addons/website_slides/static/src/js/slides_course_quiz_question_form.js +++ b/addons/website_slides/static/src/js/slides_course_quiz_question_form.js @@ -116,14 +116,12 @@ var QuestionFormWidget = publicWidget.Widget.extend({ }, /** - * Handler when user click on 'Save & New', 'Save & Close' - * or 'Update' buttons. + * Handler when user click on 'Save' or 'Update' buttons. * @param ev * @private */ _validateQuestion: function (ev) { this._createOrUpdateQuestion({ - save_and_new: $(ev.currentTarget).hasClass('o_wslides_js_quiz_create_next'), update: $(ev.currentTarget).hasClass('o_wslides_js_quiz_update'), }); }, @@ -169,7 +167,6 @@ var QuestionFormWidget = publicWidget.Widget.extend({ } else { self.trigger_up('display_created_question', { newQuestionRenderedTemplate: renderedQuestion, - save_and_new: options.save_and_new, questionFormWidget: self }); } diff --git a/addons/website_slides/static/src/js/slides_course_tag_add.js b/addons/website_slides/static/src/js/slides_course_tag_add.js index dcab7176a93..b62e9cf0809 100644 --- a/addons/website_slides/static/src/js/slides_course_tag_add.js +++ b/addons/website_slides/static/src/js/slides_course_tag_add.js @@ -29,12 +29,14 @@ var TagCourseDialog = Dialog.extend({ click: this._onClickFormSubmit.bind(this) }, { text: _t("Discard"), - close: true + click: this._onClickClose.bind(this) }] }); this.channelID = parseInt(options.channelId, 10); this.tagIds = options.channelTagIds || []; + // Open with a tag name as default + this.defaultTag = options.defaultTag; this._super(parent, options); }, start: function () { @@ -42,6 +44,9 @@ var TagCourseDialog = Dialog.extend({ return this._super.apply(this, arguments).then(function () { self._bindSelect2Dropdown(); self._hideTagGroup(); + if (self.defaultTag) { + self._setDefaultSelection(); + } }); }, @@ -151,6 +156,11 @@ var TagCourseDialog = Dialog.extend({ return values; }, + _setDefaultSelection: function () { + this.$('#tag_id').select2('data', {id: _.uniqueId('tag_'), text: this.defaultTag, create: true}, true); + this.$('#tag_id').select2('readonly', true); + }, + /** * Get value for tag_id and [when appropriate] tag_group_id to send to server * @@ -260,7 +270,16 @@ var TagCourseDialog = Dialog.extend({ //-------------------------------------------------------------------------- // Handler //-------------------------------------------------------------------------- + _onClickFormSubmit: function () { + if (this.defaultTag && !this.channelID) { + this._createNewTag(); + } else { + this._addTagToChannel(); + } + }, + + _addTagToChannel: function () { var self = this; var $form = this.$('#slides_channel_tag_add_form'); if (this._formValidate($form)) { @@ -280,6 +299,34 @@ var TagCourseDialog = Dialog.extend({ } }, + _createNewTag: function () { + var self = this; + var $form = this.$('#slides_channel_tag_add_form'); + this.$('#tag_id').select2('readonly', false); + var valid = this._formValidate($form); + this.$('#tag_id').select2('readonly', true); + if (valid) { + var values = this._getSelect2DropdownValues(); + return this._rpc({ + route: '/slide_channel_tag/add', + params: { + 'tag_id': values.tag_id, + 'group_id': values.group_id + }, + }).then(function (data) { + self.trigger_up('tag_refresh', { tag_id: data.tag_id }); + self.close(); + }); + } + }, + + _onClickClose: function () { + if (this.defaultTag && !this.channelID) { + this.trigger_up('tag_remove_new'); + } + this.close(); + }, + _onChangeTag: function (ev) { var self = this; var tag = $(ev.currentTarget).select2('data'); diff --git a/addons/website_slides/static/src/js/slides_course_unsubscribe.js b/addons/website_slides/static/src/js/slides_course_unsubscribe.js index 74992e29baf..2003f8ea688 100644 --- a/addons/website_slides/static/src/js/slides_course_unsubscribe.js +++ b/addons/website_slides/static/src/js/slides_course_unsubscribe.js @@ -13,7 +13,7 @@ var SlideUnsubscribeDialog = Dialog.extend({ template: 'slides.course.unsubscribe.modal', _texts: { titleSubscribe: _t("Subscribe"), - titleUnsubscribe: _t("Unsubscribe"), + titleUnsubscribe: _t("Notifications"), titleLeaveCourse: _t("Leave the course") }, @@ -60,7 +60,7 @@ var SlideUnsubscribeDialog = Dialog.extend({ if (state === '_subscription') { btnList.push({text: _t("Save"), classes: "btn-primary", click: this._onClickSubscriptionSubmit.bind(this)}); btnList.push({text: _t("Discard"), close: true}); - btnList.push({text: _t("Leave the course"), classes: "btn-danger ml-auto", click: this._onClickLeaveCourse.bind(this)}); + btnList.push({text: _t("or Leave the course"), classes: "btn-danger ml-auto", click: this._onClickLeaveCourse.bind(this)}); } else if (state === '_leave') { btnList.push({text: _t("Leave the course"), classes: "btn-danger", click: this._onClickLeaveCourseSubmit.bind(this)}); btnList.push({text: _t("Discard"), click: this._onClickLeaveCourseCancel.bind(this)}); diff --git a/addons/website_slides/static/src/js/slides_slide_toggle_is_preview.js b/addons/website_slides/static/src/js/slides_slide_toggle_is_preview.js index 1a2d217a727..604170b646a 100644 --- a/addons/website_slides/static/src/js/slides_slide_toggle_is_preview.js +++ b/addons/website_slides/static/src/js/slides_slide_toggle_is_preview.js @@ -19,9 +19,9 @@ odoo.define('website_slides.slide.preview', function (require) { }).then(function (isPreview) { if (isPreview) { $slideTarget.removeClass('badge-light badge-hide border'); - $slideTarget.addClass('badge-success py-1'); + $slideTarget.addClass('badge-success'); } else { - $slideTarget.removeClass('badge-success py-1'); + $slideTarget.removeClass('badge-success'); $slideTarget.addClass('badge-light badge-hide border'); } }); diff --git a/addons/website_slides/static/src/js/slides_upload.js b/addons/website_slides/static/src/js/slides_upload.js index b5704d68792..3ab24914d5a 100644 --- a/addons/website_slides/static/src/js/slides_upload.js +++ b/addons/website_slides/static/src/js/slides_upload.js @@ -67,11 +67,12 @@ var SlideUploadDialog = Dialog.extend({ this._alertRemove(); $('

', { "class": 'alert alert-warning', + id: 'upload-alert', role: 'alert' }).text(message).insertBefore(this.$('form')); }, _alertRemove: function () { - this.$('.alert-warning').remove(); + this.$('#upload-alert').remove(); }, /** * Section and tags management from select2 @@ -188,17 +189,17 @@ var SlideUploadDialog = Dialog.extend({ if (! this.modulesToInstallStatus.installing) { btnList.push({text: this.modulesToInstallStatus.failed ? _t("Retry") : _t("Install"), classes: 'btn-primary', click: this._onClickInstallModuleConfirm.bind(this)}); } - btnList.push({text: _t("Go Back"), classes: 'o_w_slide_go_back', click: this._onClickGoBack.bind(this)}); + btnList.push({text: _t("Discard"), classes: 'o_w_slide_go_back', click: this._onClickGoBack.bind(this)}); } else if (state !== '_upload') { // no button when uploading if (this.canUpload) { if (this.canPublish) { - btnList.push({text: _t("Publish"), classes: 'btn-primary o_w_slide_upload o_w_slide_upload_published', click: this._onClickFormSubmit.bind(this)}); - btnList.push({text: _t("Save as Draft"), classes: 'o_w_slide_upload', click: this._onClickFormSubmit.bind(this)}); + btnList.push({text: _t("Save & Publish"), classes: 'btn-primary o_w_slide_upload o_w_slide_upload_published', click: this._onClickFormSubmit.bind(this)}); + btnList.push({text: _t("Save"), classes: 'o_w_slide_upload', click: this._onClickFormSubmit.bind(this)}); } else { - btnList.push({text: _t("Save as Draft"), classes: 'btn-primary o_w_slide_upload', click: this._onClickFormSubmit.bind(this)}); + btnList.push({text: _t("Save"), classes: 'btn-primary o_w_slide_upload', click: this._onClickFormSubmit.bind(this)}); } } - btnList.push({text: _t("Go Back"), classes: 'o_w_slide_go_back', click: this._onClickGoBack.bind(this)}); + btnList.push({text: _t("Discard"), classes: 'o_w_slide_go_back', click: this._onClickGoBack.bind(this)}); } return btnList; }, @@ -351,22 +352,20 @@ var SlideUploadDialog = Dialog.extend({ }; }, /** - * Show the preview/right column and resize the modal + * Show the preview * @private */ _showPreviewColumn: function () { - this.$('#o_wslides_js_slide_upload_left_column').removeClass('col').addClass('col-md-6'); - this.$('#o_wslides_js_slide_upload_preview_column').removeClass('d-none'); - this.$modal.find('.modal-dialog').addClass('modal-lg'); + this.$('.o_slide_tutorial').addClass('d-none'); + this.$('.o_slide_preview').removeClass('d-none'); }, /** - * Hide the preview/right column and resize the modal + * Hide the preview * @private */ _hidePreviewColumn: function () { - this.$('#o_wslides_js_slide_upload_left_column').addClass('col').removeClass('col-md-6'); - this.$('#o_wslides_js_slide_upload_preview_column').addClass('d-none'); - this.$modal.find('.modal-dialog').removeClass('modal-lg'); + this.$('.o_slide_tutorial').removeClass('d-none'); + this.$('.o_slide_preview').addClass('d-none'); }, /** * @private @@ -388,6 +387,7 @@ var SlideUploadDialog = Dialog.extend({ _onChangeType: function () { var currentType = this.get('state'); var tmpl; + this.$modal.find('.modal-dialog').removeClass('modal-lg'); if (currentType === '_select') { tmpl = 'website.slide.upload.modal.select'; } else if (currentType === '_upload') { @@ -396,6 +396,7 @@ var SlideUploadDialog = Dialog.extend({ tmpl = 'website.slide.upload.modal.import'; } else { tmpl = this.slide_type_data[currentType]['template']; + this.$modal.find('.modal-dialog').addClass('modal-lg'); } this.$('.o_w_slide_upload_modal_container').empty(); this.$('.o_w_slide_upload_modal_container').append(QWeb.render(tmpl, {widget: this})); @@ -407,8 +408,6 @@ var SlideUploadDialog = Dialog.extend({ } else { this.set_title(_t("Upload a document")); } - - this.$modal.find('.modal-dialog').removeClass('modal-lg'); }, _onChangeCanSubmitForm: function (ev) { if (this.get('can_submit_form')) { diff --git a/addons/website_slides/static/src/js/website_slides.editor.js b/addons/website_slides/static/src/js/website_slides.editor.js index 9865ccd5267..8ee780a2534 100644 --- a/addons/website_slides/static/src/js/website_slides.editor.js +++ b/addons/website_slides/static/src/js/website_slides.editor.js @@ -5,6 +5,7 @@ var core = require('web.core'); var Dialog = require('web.Dialog'); var QWeb = core.qweb; var WebsiteNewMenu = require('website.newMenu'); +var TagCourseDialog = require('website_slides.channel_tag.add').TagCourseDialog; var wUtils = require('website.utils'); var _t = core._t; @@ -13,8 +14,16 @@ var _t = core._t; var ChannelCreateDialog = Dialog.extend({ template: 'website.slide.channel.create', xmlDependencies: Dialog.prototype.xmlDependencies.concat( - ['/website_slides/static/src/xml/website_slides_channel.xml'] + ['/website_slides/static/src/xml/website_slides_channel.xml', + '/website_slides/static/src/xml/website_slides_channel_tag.xml'] ), + events: _.extend({}, Dialog.prototype.events, { + 'change input#tag_ids' : '_onChangeTag', + }), + custom_events: _.extend({}, Dialog.prototype.custom_events, { + 'tag_refresh': '_onTagRefresh', + 'tag_remove_new': '_onTagRemoveNew', + }), /** * @override * @param {Object} parent @@ -45,6 +54,29 @@ var ChannelCreateDialog = Dialog.extend({ formatNoMatches: false, multiple: true, selection_data: false, + formatSelection: function (data) { + if (data.tag) { + data.text = data.tag; + } + return data.text; + }, + createSearchChoice: function(term, data) { + var addedTags = $(this.opts.element).select2('data'); + if (_.filter(_.union(addedTags, data), function (tag) { + return tag.text.toLowerCase().localeCompare(term.toLowerCase()) === 0; + }).length === 0) { + if (this.opts.can_create) { + return { + id: _.uniqueId('tag_'), + create: true, + tag: term, + text: _.str.sprintf(_t("Create new Tag '%s'"), term), + }; + } else { + return undefined; + } + } + }, fill_data: function (query, data) { var that = this, tags = {results: []}; @@ -87,6 +119,44 @@ var ChannelCreateDialog = Dialog.extend({ $form.submit(); } }, + _onChangeTag: function (ev) { + var self = this; + var tags = $(ev.currentTarget).select2('data'); + tags.forEach(function (element) { + if (element.create) { + new TagCourseDialog(self, { defaultTag: element.text }).open(); + } + }); + }, + /** + * Replace the new tag ID by its real ID + * @param ev + * @private + */ + _onTagRefresh: function (ev) { + var $tag_ids = $('#tag_ids'); + var tags = $tag_ids.select2('data'); + tags.forEach(function (element) { + if (element.create) { + element.id = ev.data.tag_id; + element.create = false; + } + }); + $tag_ids.select2('data', tags); + // Set selection_data to false to force tag reload + $tag_ids.data('select2').opts.selection_data = false; + }, + /** + * Remove the created tag if the user clicks on 'Discard' on the create tag Dialog + * @private + */ + _onTagRemoveNew: function () { + var tags = $('#tag_ids').select2('data'); + tags = tags.filter(function (value) { + return !value.create; + }); + $('#tag_ids').select2('data', tags); + }, }); WebsiteNewMenu.include({ diff --git a/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss b/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss index a6c406e5242..059a0669641 100644 --- a/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss +++ b/addons/website_slides/static/src/scss/slides_slide_fullscreen.scss @@ -119,6 +119,6 @@ .modal-open { > .modal-backdrop { - z-index: $zindex-dropdown - 1; + z-index: $zindex-modal-backdrop; } } diff --git a/addons/website_slides/static/src/scss/website_slides.scss b/addons/website_slides/static/src/scss/website_slides.scss index 1f4175d1e99..c3b87821628 100644 --- a/addons/website_slides/static/src/scss/website_slides.scss +++ b/addons/website_slides/static/src/scss/website_slides.scss @@ -554,6 +554,11 @@ $o-wslides-fs-side-width: 300px; } } +#slide_channel_add_form input[name="channel_type"]:checked + label { + border: 4px solid $primary; + box-shadow: 3px 3px 5px gray; +} + // Embed PDFViewer // ************************************************** #PDFViewer.o_wslides_fs_pdf_viewer { diff --git a/addons/website_slides/static/src/xml/slide_quiz_create.xml b/addons/website_slides/static/src/xml/slide_quiz_create.xml index 6ec408926b9..6bd3480e774 100644 --- a/addons/website_slides/static/src/xml/slide_quiz_create.xml +++ b/addons/website_slides/static/src/xml/slide_quiz_create.xml @@ -68,10 +68,7 @@
- +