2i>}MDxmQy$day>p>He3Hf;s
zkZS~mN;TTVM^?`hD7?rC|E=<9h#j!o;g5jMSTo13wj63ha=@juNZO@#ItZ=J#a|-|
z4dek44pve*8xhdHkWj_`
zEZTz+K0zc>;n9!RdtrD;^y`xBs_LSlIkD)bvEjKHtag%2Gi&DBN7i0`z{yrgXzNc+
z4q8k{Q$nwE)qHRsDEM7ayx%i8!D!UitD?e`P97Qz3j0YUhTiD^kpf!CMHh#ULi2C(
z>1_u01bvn9@X$q)#~?uQHqz6>0}h6rB)e?xm{0!*yqncW`>H{`2y#!qX*NHB{Jc+a
zq_+F=B=K%ox9(;yfJ7m+k>YRNmE6w1gp@kZzr%wqrjs$z&*rg{=1}L1pt(VX${vX@
z)cmEd_j+BCyh--yp8MkX7jjt7B#!V1xo5UY;|8vV{KNcjCms
z7Ax0OPDr!=LmM-kHY12S{dbS$Z}ANLyL$eYgnB)toiab*N@nu*e#LNSg>GgMa
z=Kq2-!->ePhnpfa)jh_NnH)-7x>}5$^{yQm4|Vg5^x?f)RSq8;G0*X!&!=MxlO%MM
z;%B{O<^k{8LK~(hF48F>{54JJR*E>n!2VgV=4cdYf)_He9#RPRmA)!mBXRO0CXZkI
z&*BiPOrPFTaiyIJA@$>V%D@isSgLLw!Q69g!
zpvJ|@%L}OmQc0A~xsmUwD%}XWZ}ew~}lL8XcFYM7@ID?e^G(bRPe{&fvcjaqCj1nOb381DmrkPIcO
zn{jpKdIzwJREpMnn{?WLxcRQQ*aek@=cx2KkaWacf7xS*3YUa>vx)l50X@pxHAvm!
z7EUzl!~-+4y$AX@Scq5-@S}HS_DMG8V0Efm2XZBS30bS7z=8r~?l)y;5XbG~AS*!?
zSu3qcc$2W=k?a1{Kl1uK<#Eh!F{P!_R%T`a!8SHFipq+1VB$-nXGW_&-atI(j0l{Tr`=g9EAq_CpxIM
z?x%1cus`l%1XsUp$82C*zB}KYwlMcz9#}!F(pe(oP#+dBp1b6WvCIZs+;_v6*v~h`
zKaxaLPZZ=5QIeKfeudCra@Az2
z6@6FHYyh}kg#iE%Lr;c^n@z7e^#DcK^_SbH9z#VEZJ|k)XIF)shYUQQoK6T4L
zfuF2WX2I*5{3wb#swO=h@drRu=F=-CoCtxy-MlecZ$QhuJS^u>Q23x
znydxK(`hHEIdU7BJR0VcOgqgat-jA2HN`{6_3k;k{3d
zfCFN`SiNg?BxmXFXn&*Zl`OAVX*s_O2th=nygvRe-YvA)#pV%7)xJpDZaYSE?dN%*
zWLV!$k%}Ag#IWmrDzr4?tNJ9br>w-Ui^i$_fGCN}Ih!!t{j32DAfV{6JCKq*Y7^pgpWsNFTQH4??g$_Z#>u}3#_zu>
zlY)RAg|XJLP13f)(@*P4gs>CrE+&J7|AO(=Do$f
z+$o%^?l5&6nU#qlqr#vwLoZQQ9;=~hGwvb|l+$k+8JTKO9HEVbGXHi~M>G(SA60>Wy@aE0dS9M=(
zuKg?i|Ctp3ucAdOX_p@)X8Shgp`t?+!<1+4^un&o7gypg+Fr8&dSOYyt9%_Z-24ge
zr(0v6Vx_S6L?WLNO;8M*@iQ9XtR42kg=+zX%x5(1!8ZOp+who|fW}w<
z_nJ$4%aCQOEJAC$Izi--Mbj&`<+|MbdfF*_7Zc7$BJ8-dG?8n{U%kyfZ6O6uSTC-3
z@fV=#tqr&w!ztJhsIBsh@A!4CeyUIn6S+xKs`V*=QD%V2Q8u4Uu5$t!5Cr@xero83
z*+8G%Ct8#F!9d^U<3w5~d@_=>rKG|1gKK4^>b8Mz!UT`<%cCYcoF-AjQn0m?I#Yj#k>#ta_1KV@*Xz2h{pVnzMzS)yN1
zC#a`gL1PMG+BA;>Y>#K9U#rSe0wFb3jf}w?)`is7(R;LR?X!IsuNy^7zX?5QI$Ytw
z|KPy?AOHQk2;fGKrcnOOb#|g%M_2-r`J65KP(71a_qrb1qUu5FjO-_*nMH^uzE;dN
z5ONM@3)}B&j;+Am6SiPe$T6pe`Kw!7Hj@n`j~~&T`KrXCZ}yoNWBo5zD5FBh*_G*!PQ}?dz
zB<$gd^($AIQz7@k{ugX>$5kV*PKdmjdY$O3aavb!9X^Se6h_*F4`?u{`=mO;RGS!l17xjXIO6ZOt
zFtk*XSD(ud^r;#P&)KVJ@Tbw||IAv0f4TDfcdq$YR{YQ6ZKvi~9n|T?cWN&k6hynw
P1?gz%-73|1_{V<%Q%Chc
delta 8226
zcmaKScR*9iws#VGk={X&-W92#BO*nbR6(lJg#eKjKnWZLq=hCRA%GOAg4EC;wk#LEa_@XxX#k8T5
zgKR5!k;26=_IUD6aYmB@2z$O$`F)279q8RaU(^8j7Ze#SL=oOp^ks^9Cq&YE)frppZDO%@}t0Ye>
zYl?oOb78vS^5Z6X``6=!BD=a;$ahl9loiZg8O)b5_i>jl(Husv#dLFfI1&etxN%Xl
zOp!=3r5GLJV1IuJU~xAWaVV-yjdie}?9MJxV`i
zzqELZe(<02Dq7MY|JbrCu)hxB?OmC@>I(jyU4O(x)CLrLW~Qg7wGA-8+ON*;oU1;h
zNPgS#`W8~6wld-)dJ4ip<{*zvAzL6jL%-DAi`ThSXL)znOoT;paGyIt?@p&y61Qqv
zF-PlwqMgINi*jJQjM*3IWTvouub5i}eFjvJm;v_Y>;(N13KsxjccbosfYD3iYA>|6
z_2^dk!Kj-#`ie$D&frPV9N@}f$c@XdH>^JFBki9m*057`Udvwtv+l%6l{Q`oaGbU4
zj0wHxbw-EaL(p+C{JLzM`!j}MlC@a`;NSK(yG27lPbhu0cD!0B{r$9|h~@UaeN`d*
z9HZm=gIYWchafuVcYCT+W5JxDMLKebIRzx<4eqYbjef`?136?WvX2bU-ds#R6#5A1
z%#xtDDS7a`#)sriq9t^ulyn^fPzJXM66l6_cv(pOfdDLrc_x@F!`||3%a@c&fm)<%N%w
znnUU?Et?~W^u!jNGi_TMbTmkw2%_7L+SB~d$#E~Iye2AD;e++~0mPP66Je9m5}M#i
z;A9b}8-VnTS7dj2^d8+5=*@R^B%zNF*fHlK^Z%B=F(<43D9+utc^>Z6yb3<(SMXmBHBU+@jK7%
zHNSow&6%QM@MUyZdbcEPW%lmLgCFgjwjwAJeXoNAF_h@mx&QRCaRp5UDU~{pNMzkHc
z%2ck*CS|ThB8K_S$e_H>Q7zN>B+M9HR!4o2|5bMOI){m~Nbk}+`4g{7R-VETDwmUP!8X}Gz(z50gpBqlm6
zb%(68ucKB4hOWoL#>4o^^GMJzHIzc{#%{CB)f{L(=Jb#H(rn)=`HBN%bTMHmiYj>~
z3jNq01{Vju#Z0-Wa)12}HA8k%OmN)9j1jJ;1)V#8H0mmo8`Ks$kK`IPM!(zn{M*r^
zsu#b*@sQt_Z~z&AM?iw2CsyluUf+f(g}*8khO1@&k>i^h|L9Jwrgm-rx+*W3BULha
zcL3qQ4MqA>xt=oUI~=k9#HWq8~=U&J&?y
zV4Rf>=rw1J^up6Kq)Ie17S>ZZ{zlYnAe4!%(=k#m`{RQjNA=>{G~4DxI-<+~{4%7V
zpLfv3P2Q4hTW$La7WP|n@v$)m^^$lFS7EmAcq%*YR^~M!oe#m}8!0~<&osB=)K8hY
zJO~Hzv3!ok+@TLYf1};tU_3b+@7(hJK1-CHI&;_9IMG0I8S`@kkE@=p%&P`om78h`
z*?e=7zM>NCfp8-$e3QrO_6$Z4V2^m1fLHaH9H+f=Wo#2++-NRme+tiRHYbZB?~I<3
zJ-vH%AO~8ESvlefj7?v2#Va0-xEFI{VF5A+(<}y0g>J1y|0}xvgPDJc$iJET_i(X>
zcaCaD@x)hGSC&9$AkJ9dUCIExuJ|B^+6
z+W$^Bv;JYdfM=||JZ>s=i$+|-J3cD#w{hZ~+-A7mUGDO;{>N)})vGCF8UCLN@}Qle
z{9RPCFCAW|fc$2rlP+9P>aGPpTA#fs#ED{eQIp8LV0JD
zEwcY?7P+8vZfG-XtCP|Yc?U3WbV`;}SZs)W|NBdg;wj5QqHpEEI)W~wW*G4btmPiL
zX4?TwR;yF~3#0Qp&nWix_Ncq3&+a~c
z6=Lqvx1P!QM}P}OqkRN83^X78P`^6(s!g-=eNwReoD!XRJ<^%y2goQ)@2voj(oXg9
zR~pi*-`zjdTB_E{K43_w`Dhe@((9D9v7^+B$Cs2h
z0Mb%cq=!(appl1Jk=u3UV7rb(7K$eOV^BHSby@_*|KR#ku$Y!}ln^MA(XRXY$x6k#
ze~`I-pmT(ctm6Hp+nW|s^Q-(C8~&)ayAk-SmM2lzV`{*_g5Ub-$9|tH-E&QhAYdo#
zM-{k>By`HFoSvcx;4=Tk>BtY3XD7;s4^6et)sfN#eX*Ilz1H4{pQa@ai$a}g`N{7uSLSZ;FbXU}E0
z8uRry`XYcVt9I4=+-nD4_jDyzPqYw7r}1CmlQO>Z_;)520%^fNwU0c^9)6v)4sdt`
zJ&If}^fe0twm!g{;~ky{_by3KEg3e^k_qGI*rzx$|&N}j?y*kxq
z$BQ^^bF>F+emNyg%i|h;oK6JQTPXnteHZ8|Q5i2hi)r4sLX&^j^p-q%&WjO{6~M*C
zp~dc29Xz?#^G$$9#qGv-E*66&YYfyB0{fkCZPSbbUp6>*87^Yhm)O{KGxSXL;lU>J
z!_HrNSiiZ{g~uF?14Yuhw>6Ll?zNAAk1^lNxvruU`&YX3cO?RdO=Pe${5MybaQTH_
zw(3lbCo-`vhM2imlx5GSa_aXs5_K!8vPBzT_2o5&A%#bIVx1&Ney=n3L6`gTN~%;A
zo)z!o_%6{pqEtGT#P($LJiIWjGOD0M>A)+2b%Rn!Do_|{6#76l&`M*Y!&Z=UMW>o7
zoYHMDfN1J@${u(P2vTmdUgD6ReutQ2!cN_m0Bzf?{+*}KH{^w!c<|jv!g73vYJn+l
zWktq9^+EePbpiIMv6vNHBTgb#T^&X0+<>Bd`Ozj_y1lC8b`!d}Pkc_EZeX4r9J|Ms
z$Rm4?(z3n6waIUt=o?}bvq9G%*DuGYsxdNv;=nyNt+Bl`V;5JUNx;)<+>?AyS~%P|
zgSYgbF^lE~UE(q>pcqjJ;QUh4gQ)lh1#z)5o)p-$28A+g1hV)MuzUmIsx?3M8eoJw
zCygWW4El-pi556YvAnh4*_}aMI1oFD`R?WQb4z3>%LBwtVrk&eqH^k^oj0LsS$}R
zn+yro2Q-}u4`#0Emu`VR&9C48T@E3rq=M#eBHqhJ_52ocYVU}$`Edv7${QH^vwil$
zHvzzeQ%@Uq(~pRZuEdG5bCF137n;aRxj208Wa(fd7%}^-TF*A?5K$d6
zlN}E|f%rN|G;&P$=(=^5^$tYd&VhwLZRCJ9#L62$wrsqUZ-?!Y5*S$4;KY&9=8#Xo
z;#Qd|{eUNwBn!ilSOr!)#*aXq&5IEnb?sy?pCSvZsuF__#ahk}94Rl{^gA_mI}E_J
zM8At}*=eu5ZF?^o0Jf0DWh4Ih^h~KeIP5g}ahtZ)g=B?E3~CCd#=mtoIz)@wQ6mns
zT=cD0Es&ssD^Gp?1j3v2&v+~Uz6gap$F^bpU0+g8Zy|pMNPp?;{>*0{EccS9+V;XP
zT<5~52BXSi8b~_kwls9CI;K0nuH;&NsQ*^rl0UL&Q%R#HD;l=A)0g&i>$4*tyo>R
z?hzn)sC}Q@+;Mqk?3!f6r#Q~~ak<#;8%FI?v@7{=lwkngJ)>>DDf}1hqsB=-MtZQn
zh2oG3iR~RnY`489cuIsNfs8$IcN8ie4d(9hYK!<}*;(>oZA5tuBA(mQ0?Cn*TFFJi
zIRLu~w3>jnru@Pd<%l667!JgcJLyv9@Ti!uAO#m?aG3O;AdPH85tKf|E+)rzSQ)-Zx5aNR<|W3Gpb%Ucdikd6vM1X@
z$_LFLwj(w!m%;1)BkyDG;#giFnGJ2;nNjKDO8GjvDaf}YW(z*QkJU6rvgcwnZzCYVs`4JP|2$Nm0f*pRIM7o4$PW$bv7s8oNQzJ@gCtS
zDK|iEjdzT@`gY{%Npiq9qNsz03YYN$KjTR)48|>Z)6rwySN=UzxKDO}f8Q8i<*ou&
z!a45Ee1C|lwkf|M+8l0~A)}P%EAKIcs#i#Im5Y
zZuayVfd9fVMqkrup6R6b2JzRy)Qgys9+Z9^RO1^sq6w7#plOgkirWY3H{n1E
z=sYs|29C*GrdL<9l*np}&jfU2Mc
z*73%V*L8>5V;y2g&JQRZGc7fck2TALwxR<_R67#!>Uo1
zrrj5gtU1-RB=ZM;Tb>0SQgf;V)RZLcitHHA-b26a@$8l9wXeyK`cRXloAC+q99{|G
z{FyI>UjWrNTIQs5Nb7armdI!pZX_8tAT7TlK1PO9b}jyfHp}0*KLB?efX^i(lZf7(
z9`r3>M#(w#UQfuvWU6hyLDIzm?o#TkbZ8k}1lFhJWBDLndN>xYcq?G&OsMPR&LotR
zBrDtA#}2y<@v06j9G_6r^KeDiXT+dBsRI*_)3^P~>e=NLg?_%t8D*
zx5095_$I_ZO%XWIB}ml&)({35`yc%J4-qZloy|J{*F^;B2-p!9XQEZWeG0T~6}`z;
z$%>$^oz4t=%S5+?!3omJmBc%$&lmV&>Q72dxCue3F(SzltG{0k5Eunv4L#o
z7Uyj-Mq@LnTKnDyJr-(63S%gRSHlQuMWSK`Yr~581LlraD1JnxSORWvtw1Qj$%4-a
zf7!l_80mR$s-h}Ec|;K)qz7Mu@H4mw3OJis47d#pF|^~##e2oyik?V7hC}u}#Ge3>
z^6&oo-*6)T(Qhxl=fhJSI;u3424joyuqTVzbDZkBcsSkg3SPVJOv&eN|2e64eGFtf
zf>E`a@S}KR_ux_>f1vvIRXK)MdMGu5`8hM=iLHd?dHcP3d)3d5KS6I*#mb*v4%B*;
zCBaWtjbxY29_$pBzTWNy=^$%#ntJrU;gt;zNvd6EXqH)5eNkv;UR_E9Ns2Cml4O^f
zX%T!t(~UD(lznXp%J-aBgCj*>d^OEeX#2Tj7{a&e{$h|*%R<8|B*=?2S|<;#ptwvf
z=8zqNUT^P`8AcZeSv4sxl6{ZKU*cmtxttvTC^H5h?Hs-2NDg#UMVXWWkhzkn;lGi?
zA04c^CEzH9#c1D{qHGUSC7XCU*@t3R2j4YQia)CQpH2%30+uG#tp54_+ch)t8tKfF6hyA;lyipY*
z7t!KH{CYdE9{KdaAx3WXLdV>dL5_zDX8-v<@y1lhZL-E-+XlnLSgoXxLMQI-v7s3cp;Vp)f+=j=h;FIrgc{z>7Zcq8!U%_cx!f7i1`Pvpw?3
zUxhjSRC3Mou)jWH#D0{nbPi5EFf}$WqKK>JHagwUP-DXiV=O*y?dq~;;@eBpRvW2(
z%ftRNl<5Bg3`K$vLk+K@zuj1;{l$SGi223yxsJ%ejY)rWI
z8w5eXygB@Gmxcg)M*#l9t*MZo#0Q7*hv)c6nKYLro;RYVZsYip>
z3R>2ObO2&FPMrN4J9!#Mia)8$C?lRm_IEq}pA(i4Tu>!0<4ph#-ZEjLjVt0Djj)*HJ+AFbft+%S$c9%@
zWkZ3Qb-f|;l${Grsccx=`srZ
zxgPcwu5s(_yh{1j>rdk!xsbaJN}FcEAPXtWmvLT*pPZh(@48bGt=IJTs%R#LfL!_S
zsQuSn+h5{&{`)`WuOil9y^@JyMy3Qkwi_0?OHWavT*jePVqZ>a|8#Qo*VsssmhZqq
z)$^@G4UD?MtKn3ezFz&1#9jCu_R&3lxMyY9XJg503d7TGD_Z;8?qiyS~30gh+x6*hGhxk?|
z?blL{0$2nn$IDMk%wT7JyDW+2WsWB$;da#XdkdVhD6{*7Ak5&>(F0ex?2WRzEJw6;
zs_p&sO2eYvV4qQ=K8H4)?c(xJt3WBb6`xNq-mVSTHb@LreIuEQ)Wc1+5Nl+?8J8tpIVs~sA??^69-;h
zdIaNNSuGFYS{4O7=Ve7Qo_t;!WtANQjV?>-F?$C${o5h^uOj&0vQj;9_ww*h95Qxk
z5vq{Z+>7yVuP6{WR@8`JCra3DEb6(}#9WKgJ#)jmMmk-*wK##gG<`^scW2d_4z%`s
zji>R{)5?rG!L4-$sgX*~Bd_HvN5Bu$2*M|;ye_C7_!w4W0YP33jCRY_6&Eo(c!lR1
zQr2B^9~Aq97{2B1cI!?E@P6jRR~I0rU-Rrxqk7V7WIa&`s^8$zM_I#^P*mR#yjp>M=LHa!5*~pvx7CvlBf?xiipqrEVQOrYR
zz0k(Yo(JE3K^Z`PE%AP4IHg1>a7pC~7{4(39!S@H^b1z(m+foPXcICEH7d;>TdNyT
zhcHkJ-o*UlzUzO@V2c$jveqA;UwVj*Bc@vni&(QvJ`1Y6LE7z#VSg(|a4!%?yM0*Z
zfnecparmTn<|)7p8r6p^ieiC=ta(vNv;9VHXjmO4X5$}jhv)&uK?9WnHpBc
z3QZrLUDWmocrC$0cB93lh?PY=^0N1ze7)Q*n3>Wqz(M
z8v|QRupuJ_*8KOPgad7WMvq<*8;}*Jm$xbD;9IVc-4{tsgUSNuapTysWVoJa3w*aI
zP9~F?(#;6iEFxx?M@&Dw+C4`{@k%Oi`NvYuzH42Qs}T#V1``bZ{{cfUZ|64|h~77E
Xu(A2Lj~@6h0LbWunO?1~>mUCGSD1iN
diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css
index f2521f0d7..df6d4d632 100644
--- a/public/stylesheets/new_user.css
+++ b/public/stylesheets/new_user.css
@@ -499,8 +499,8 @@ a.coursesLineGrey:hover {color:#ffffff;}
.homepageLeftMenuMore {height:18px;}
.homepageLeftMenuMore:hover {background-color:#269ac9;}
.homepageLeftMenuMoreIcon {background:url(../images/homepage_icon.png) -74px -240px no-repeat; display:block; height:18px;}
-.homepageMenuSetting {display:inline-block; background:url(../images/homepage_icon.png) -190px -365px no-repeat; width:15px; height:15px; margin-top: 16px; margin-right: 15px;}
-.homepageMenuSetting:hover {background:url(../images/homepage_icon.png) -190px -407px no-repeat;}
+.homepageMenuSetting {display:inline-block; background:url(../images/homepage_icon2.png) -190px -365px no-repeat; width:15px; height:15px; margin-top: 16px; margin-right: 15px;}
+.homepageMenuSetting:hover {background:url(../images/homepage_icon2.png) -190px -407px no-repeat;}
a.homepageMenuText {color:#484848; font-size:16px; margin-left:20px;}
.homepageLeftLabelContainer {width:238px; border:1px solid #dddddd; background-color:#ffffff; margin-top:10px;}
.homepageLabelText {color:#484848; font-size:16px; margin-left:10px; margin-bottom:12px; display:block;}
From c413d66c4421ffab6e6a42413bebb1d71c137036 Mon Sep 17 00:00:00 2001
From: guange <8863824@gmail.com>
Date: Wed, 9 Sep 2015 00:43:54 +0800
Subject: [PATCH 4/4] =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E4=BD=9C=E4=B8=9A?=
=?UTF-8?q?=E6=89=93=E5=88=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/student_work_controller.rb | 35 ++++++++++------------
app/controllers/users_controller.rb | 11 +++++--
app/models/homework_common.rb | 4 +++
app/models/student_work.rb | 22 ++++++++++++++
app/models/student_work_test.rb | 13 ++++++--
5 files changed, 62 insertions(+), 23 deletions(-)
diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb
index 17c98e3b1..593d6bf53 100644
--- a/app/controllers/student_work_controller.rb
+++ b/app/controllers/student_work_controller.rb
@@ -42,9 +42,6 @@ class StudentWorkController < ApplicationController
end
end
-
-
-
render :json => resultObj
end
@@ -165,24 +162,23 @@ class StudentWorkController < ApplicationController
def create
if params[:student_work]
- stundet_work = StudentWork.find(params[:student_work_id]) if params[:student_work_id]
- stundet_work ||= StudentWork.new
- stundet_work.name = params[:student_work][:name]
- stundet_work.description = params[:student_work][:description]
- stundet_work.project_id = params[:student_work][:project_id]
- stundet_work.homework_common_id = @homework.id
- stundet_work.user_id = User.current.id
- stundet_work.save_attachments(params[:attachments])
+ student_work = StudentWork.find(params[:student_work_id]) if params[:student_work_id]
+ student_work ||= StudentWork.new
+ student_work.name = params[:student_work][:name]
+ student_work.description = params[:student_work][:description]
+ student_work.project_id = params[:student_work][:project_id]
+ student_work.homework_common_id = @homework.id
+ student_work.user_id = User.current.id
+ student_work.save_attachments(params[:attachments])
if Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.parse(Time.now.to_s).strftime("%Y-%m-%d")
- stundet_work.late_penalty = @homework.late_penalty
+ student_work.late_penalty = @homework.late_penalty
else
- stundet_work.late_penalty = 0
+ student_work.late_penalty = 0
end
- render_attachment_warning_if_needed(stundet_work)
- if stundet_work.save
- if @homework.homework_type == 2 && @homework.homework_detail_programing #编程作业,学生提交作品后计算系统得分
-
- end
+ render_attachment_warning_if_needed(student_work)
+
+ if student_work.save
+
respond_to do |format|
format.html {
flash[:notice] = l(:notice_successful_create)
@@ -624,7 +620,7 @@ class StudentWorkController < ApplicationController
end
def find_or_save_student_work(is_test)
- student_work = @homework.student_works.where(user_id: User.current.id).first
+ student_work = StudentWork.where(homework_common_id: @homework.id, user_id: User.current.id).first
if student_work.nil?
@homework.student_works.build(
name: params[:title],
@@ -633,6 +629,7 @@ class StudentWorkController < ApplicationController
is_test: is_test
)
unless @homework.save
+ logger.debug @homework.errors.full_messages
else
student_work = @homework.student_works.where(user_id: User.current.id).first
end
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 9c6492448..8bb971dab 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -367,8 +367,15 @@ class UsersController < ApplicationController
end
def user_commit_homework
- flash[:notice] = l(:notice_successful_create)
- redirect_to student_work_index_url(:homework => params[:homework])
+ homework = HomeworkCommon.find(params[:homework])
+ student_work = homework.student_works.where(user_id: User.current.id).first
+ if student_work
+ student_work.save
+ flash[:notice] = l(:notice_successful_create)
+ redirect_to student_work_index_url(:homework => params[:homework])
+ else
+ render_403
+ end
end
def user_new_homework
diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb
index b51de6c2c..0bff38558 100644
--- a/app/models/homework_common.rb
+++ b/app/models/homework_common.rb
@@ -56,6 +56,10 @@ class HomeworkCommon < ActiveRecord::Base
Mailer.run.homework_added(self)
end
+ def is_program_homework?
+ self.homework_type == 2 && self.homework_detail_programing
+ end
+
delegate :language_name, :to => :homework_detail_programing
end
diff --git a/app/models/student_work.rb b/app/models/student_work.rb
index d7287dcc4..0a5c1b65c 100644
--- a/app/models/student_work.rb
+++ b/app/models/student_work.rb
@@ -10,10 +10,32 @@ class StudentWork < ActiveRecord::Base
has_many :student_work_tests, order: 'id desc'
before_destroy :delete_praise
+ before_save :set_program_score, :set_src
acts_as_attachable
def delete_praise
PraiseTread.where("praise_tread_object_id = #{self.id} AND praise_tread_object_type = 'StudentWork'").destroy_all
end
+
+ def last_test
+ student_work_tests.order('id desc').first
+ end
+
+ private
+ def set_program_score
+ if homework_common.is_program_homework? #编程作业,学生提交作品后计算系统得分
+ #根据最后一次测试计算得分
+ unless last_test
+ self.system_score = 0
+ else
+ self.system_score = last_test.test_score
+ end
+ end
+
+ end
+ def set_src
+ self.description = last_test.src if last_test
+ end
+
end
diff --git a/app/models/student_work_test.rb b/app/models/student_work_test.rb
index 96aa1d6c3..1cfb7f8b2 100644
--- a/app/models/student_work_test.rb
+++ b/app/models/student_work_test.rb
@@ -34,10 +34,19 @@ class StudentWorkTest < ActiveRecord::Base
def test_score
if self.status.to_i == 0
- format("%.1f",100.0 / self.student_work.homework_common.homework_tests.count)
- else
+ 100
+ elsif self.results.empty?
0
+ else
+ get_success_count * 100 / self.results.count
end
end
+ private
+ def get_success_count
+ self.results.inject(0) do |sum, result|
+ sum += (result["status"].to_i == 0 ? 1 : 0)
+ end || 0
+ end
+
end