PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i5h-3LL

HOME


5h-3LL 1.0
DIR: /srv/http/vyvoj.adent.cz/vyvoj/moodle_esf_vz/mod/workshop
/srv/http/vyvoj.adent.cz/vyvoj/moodle_esf_vz/mod/workshop/
Upload File:
Current File : /srv/http/vyvoj.adent.cz/vyvoj/moodle_esf_vz/mod/workshop/assessments.php
<?php  // $Id: assessments.php,v 1.57 2007/01/10 08:29:42 toyomoyo Exp $

/*************************************************
    ACTIONS handled are:

    addcomment
    addstockcomment
    confirmdelete
    delete
    adminlist
    agreeassessment
    displaygradingform
    editcomment
    editelements (teachers only)
    gradeallassessments (teachers only)
    gradeassessment (teachers only)
    insertcomment
    insertelements (for teachers)
    listungradedstudentsubmissions (for teachers)
    listungradedteachersubmissions (for teachers)
    listteachersubmissions
    regradestudentassessments (for teachers)
    updateassessment
    updatecomment
    updategrading

************************************************/

    require("../../config.php");
    require("lib.php");
    require("locallib.php");

    $action         = required_param('action', PARAM_ALPHA);
    $id             = optional_param('id', 0, PARAM_INT);    // Course Module ID
    $wid            = optional_param('wid', 0, PARAM_INT);    // Workshop ID
    $aid            = optional_param('aid', 0, PARAM_INT); 
    $userid         = optional_param('userid', 0, PARAM_INT);
    $cid            = optional_param('cid', 0, PARAM_INT ); // comment id
    $sid            = optional_param('sid', 0, PARAM_INT); // submission id
    $elementno      = optional_param('elementno', -1, PARAM_INT);
    $stockcommentid = optional_param('stockcommentid', 0, PARAM_INT);

    // get some useful stuff...
    if ($id) {
        if (! $cm = get_coursemodule_from_id('workshop', $id)) {
            error("Course Module ID was incorrect");
        }
        if (! $workshop = get_record("workshop", "id", $cm->instance)) {
            error("Course module is incorrect");
        }
    } else if ($wid) {
        if (! $workshop = get_record("workshop", "id", $wid)) {
            error("Workshop id is incorrect");
        }
        if (! $cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course)) {
            error("No coursemodule found");
        }
    } else {
        error("No id given");
    }
    if (! $course = get_record("course", "id", $cm->course)) {
        error("Course is misconfigured");
    }

    require_login($course->id, false, $cm);
    $context = get_context_instance(CONTEXT_MODULE, $cm->id);

    $navigation = "";
    if ($course->id != SITEID) {
        $navigation = "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->";
    }

    $strworkshops = get_string("modulenameplural", "workshop");
    $strworkshop  = get_string("modulename", "workshop");
    $strassessments = get_string("assessments", "workshop");

    // ... print the header and...
    print_header_simple(format_string($workshop->name), "",
                 "<a href=\"index.php?id=$course->id\">$strworkshops</a> ->
                  <a href=\"view.php?id=$cm->id\">".format_string($workshop->name,true)."</a> -> $strassessments",
                  "", "", true);

    /*************** add comment to assessment (by author, assessor or teacher) ***************************/
    if ($action == 'addcomment') {

        print_heading_with_help(get_string("addacomment", "workshop"), "addingacomment", "workshop");
        // get assessment record
        if (!$assessmentid = $aid) { // comes from link or hidden form variable
            error("Assessment id not given");
        }
        $assessment = get_record("workshop_assessments", "id", $assessmentid);
        if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
            error("Submission not found");
        }
        ?>
        <form id="commentform" action="assessments.php" method="post">
        <input type="hidden" name="action" value="insertcomment" />
        <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
        <input type="hidden" name="aid" value="<?php echo $aid ?>" />
        <div class="boxaligncenter">
        <table cellpadding="5" border="1">
        <?php

        // now get the comment
        echo "<tr valign=\"top\">\n";

        echo "  <td align=\"right\"><b>". get_string("comment", "workshop").":</b></td>\n";

        echo "  <td>\n";

        echo "      <textarea name=\"comments\" rows=\"5\" cols=\"75\">\n";
        echo "</textarea>\n";

        echo "  </td></tr></table>\n";
        echo "<input type=\"submit\" value=\"".get_string("savemycomment", "workshop")."\" />\n";
        echo "</div></form>\n";
        echo "<div style=\"text-align:center\"><b>".get_string("assessment", "workshop"). "</b></div>\n";
        workshop_print_assessment($workshop, $assessment);
    }


    /*************** add stock comment (by teacher ) ***************************/
    elseif ($action == 'addstockcomment') {

        if (empty($aid) or ($elementno<0)) {
            error("Workshop Assessment ID and/or Element Number missing");
        }

        require_capability('mod/workshop:manage', $context);

        if (!$assessment = get_record("workshop_assessments", "id", $aid)) {
            error("workshop assessment is misconfigured");
        }
        $form = data_submitted('nomatch'); //Nomatch because we can come from assess.php

        // store the comment in the stock comments table
        if ($elementno == 99) { // it's the general comment
            $form->feedback_99 = $form->generalcomment;
        }
        $comment->workshopid = $workshop->id;
        $comment->elementno = $elementno;
        $comment->comments = clean_param($form->{"feedback_$elementno"}, PARAM_CLEAN);
        if (!(trim($comment->comments))) {
            // no comment given - just redisplay assessment form
            workshop_print_assessment($workshop, $assessment, true, true, $form->returnto);
            print_footer($course);
            exit();
        }

        if (!$element->id = insert_record("workshop_stockcomments", $comment)) {
            error("Could not insert comment into comment bank");
        }

        // now upate the assessment (just the elements, the assessment itself is not updated)

        // first get the assignment elements for maxscores and weights...
        $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
        if (count($elementsraw) < $workshop->nelements) {
            print_string("noteonassignmentelements", "workshop");
        }
        if ($elementsraw) {
            foreach ($elementsraw as $element) {
                $elements[] = $element;   // to renumber index 0,1,2...
            }
        } else {
            $elements = null;
        }

        $timenow = time();
        // don't fiddle about, delete all the old and add the new!
        delete_records("workshop_grades", "assessmentid",  $assessment->id);


        //determine what kind of grading we have
        switch ($workshop->gradingstrategy) {
            case 0: // no grading
                // Insert all the elements that contain something
                for ($i = 0; $i < $workshop->nelements; $i++) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = $i;
                    $element->feedback   = clean_param($form->{"feedback_$i"}, PARAM_CLEAN);
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                    }
                }
                $grade = 0; // set to satisfy save to db
                break;

            case 1: // accumulative grading
                // Insert all the elements that contain something
                foreach ($form->grade as $key => $thegrade) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = clean_param($key, PARAM_INT);
                    $element->feedback   = clean_param($form->{"feedback_$key"}, PARAM_CLEAN);
                    $element->grade = $thegrade;
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                        }
                    }
                // now work out the grade...
                $rawgrade=0;
                $totalweight=0;
                foreach ($form->grade as $key => $grade) {
                    $maxscore = $elements[$key]->maxscore;
                    $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
                    if ($weight > 0) {
                        $totalweight += $weight;
                    }
                    $rawgrade += ($grade / $maxscore) * $weight;
                    // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />";
                }
                $grade = 100.0 * ($rawgrade / $totalweight);
                break;

            case 2: // error banded graded
                // Insert all the elements that contain something
                $error = 0.0;
                for ($i =0; $i < $workshop->nelements; $i++) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = $i;
                    $element->feedback   = clean_param($form->{"feedback_$i"}, PARAM_CLEAN);
                    $element->grade = $form->grade[$i];
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                    }
                    if (empty($form->grade[$i])){
                        $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight];
                    }
                }
                // now save the adjustment
                unset($element);
                $i = $workshop->nelements;
                $element->workshopid = $workshop->id;
                $element->assessmentid = $assessment->id;
                $element->elementno = $i;
                $element->grade = $form->grade[$i];
                if (!$element->id = insert_record("workshop_grades", $element)) {
                    error("Could not insert workshop grade!");
                }
                $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade;
                // do sanity check
                if ($grade < 0) {
                    $grade = 0;
                } elseif ($grade > 100) {
                    $grade = 100;
                }
                echo "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\n";
                break;

            case 3: // criteria grading
                // save in the selected criteria value in element zero,
                unset($element);
                $element->workshopid = $workshop->id;
                $element->assessmentid = $assessment->id;
                $element->elementno = 0;
                $element->grade = $form->grade[0];
                if (!$element->id = insert_record("workshop_grades", $element)) {
                    error("Could not insert workshop grade!");
                }
                // now save the adjustment in element one
                unset($element);
                $element->workshopid = $workshop->id;
                $element->assessmentid = $assessment->id;
                $element->elementno = 1;
                $element->grade = $form->grade[1];
                if (!$element->id = insert_record("workshop_grades", $element)) {
                    error("Could not insert workshop grade!");
                }
                $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]);
                break;

            case 4: // rubric grading (identical to accumulative grading)
                // Insert all the elements that contain something
                foreach ($form->grade as $key => $thegrade) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = clean_param($key, PARAM_INT);
                    $element->feedback   = clean_param($form->{"feedback_$key"}, PARAM_CLEAN);
                    $element->grade = $thegrade;
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                    }
                }
                // now work out the grade...
                $rawgrade=0;
                $totalweight=0;
                foreach ($form->grade as $key => $grade) {
                    $maxscore = $elements[$key]->maxscore;
                    $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
                    if ($weight > 0) {
                        $totalweight += $weight;
                    }
                    $rawgrade += ($grade / $maxscore) * $weight;
                }
                $grade = 100.0 * ($rawgrade / $totalweight);
                break;

        } // end of switch


        // any comment?
        if (!empty($form->generalcomment)) { // update the object (no need to update the db record)
            $assessment->generalcomment = clean_param($form->generalcomment, PARAM_CLEAN);
        }

        // redisplay form, going back to original returnto address
        workshop_print_assessment($workshop, $assessment, true, true, $form->returnto);

        // add_to_log($course->id, "workshop", "assess", "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$assessment->id", "$cm->id");

    }


    /******************* confirm delete ************************************/
    elseif ($action == 'confirmdelete' ) {

        if (empty($aid)) {
            error("Confirm delete: assessment id missing");
            }

        notice_yesno(get_string("confirmdeletionofthisitem","workshop", get_string("assessment", "workshop")),
             "assessments.php?action=delete&amp;id=$cm->id&amp;aid=$aid", "submissions.php?action=adminlist&amp;id=$cm->id");
        }


    /******************* delete ************************************/
    elseif ($action == 'delete' ) {

        if (empty($aid)) {
            error("Delete: submission id missing");
            }

        print_string("deleting", "workshop");
        // first delete all the associated records...
        delete_records("workshop_comments", "assessmentid", $aid);
        delete_records("workshop_grades", "assessmentid", $aid);
        // ...now delete the assessment...
        delete_records("workshop_assessments", "id", $aid);

        print_continue("view.php?id=$cm->id");
        }


    /*********************** admin list of asssessments (of a submission) (by teachers)**************/
    elseif ($action == 'adminlist') {

        require_capability('mod/workshop:manage', $context);

        if (empty($sid)) {
            error ("Workshop asssessments: adminlist called with no sid");
            }
        $submission = get_record("workshop_submissions", "id", $sid);
        workshop_print_assessments_for_admin($workshop, $submission);
        print_continue("submissions.php?action=adminlist&amp;id=$cm->id");
        }


    /*********************** admin list of asssessments by a student (used by teachers only )******************/
    elseif ($action == 'adminlistbystudent') {

        require_capability('mod/workshop:manage', $context);

        if (empty($userid)) {
            error ("Workshop asssessments: adminlistbystudent called with no userid");
            }
        $user = get_record("user", "id", $userid);
        workshop_print_assessments_by_user_for_admin($workshop, $user);
        print_continue("submissions.php?action=adminlist&amp;id=$cm->id");
        }


    /*************** agree (to) assessment (by student) ***************************/
    elseif ($action == 'agreeassessment') {
        $timenow = time();
        // assessment id comes from link or hidden form variable
        if (!$assessment = get_record("workshop_assessments", "id", $aid)) {
            error("Assessment : agree assessment failed");
            }
        //save time of agreement
        set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id);
        echo "<div style=\"text-align:center\"><b>".get_string("savedok", "workshop")."</b></div><br />\n";

        add_to_log($course->id, "workshop", "agree", "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$assessment->id");
        print_continue("view.php?id=$cm->id");
        }



    /*************** display grading form (viewed by student) *********************************/
    elseif ($action == 'displaygradingform') {

        print_heading_with_help(get_string("specimenassessmentform", "workshop"), "specimen", "workshop");

        workshop_print_assessment($workshop); // called with no assessment
        print_continue("view.php?id=$cm->id");
    }


    /*************** edit comment on assessment (by author, assessor or teacher) ***************************/
    elseif ($action == 'editcomment') {

        print_heading_with_help(get_string("editacomment", "workshop"), "editingacomment", "workshop");
        // get the comment record...
        if (!$comment = get_record("workshop_comments", "id", $cid)) {
            error("Edit Comment: Comment not found");
            }
        if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) {
            error("Edit Comment: Assessment not found");
            }
        if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
            error("Edit Comment: Submission not found");
            }
        ?>
        <form id="gradingform" action="assessments.php" method="post">
        <input type="hidden" name="action" value="updatecomment" />
        <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
        <input type="hidden" name="cid" value="<?php echo $cid ?>" />
        <div class="boxaligncenter">
        <table cellpadding="5" border="1">
        <?php

        // now show the comment
        echo "<tr valign=\"top\">\n";
        echo "  <td align=\"right\"><b>". get_string("comment", "workshop").":</b></td>\n";
        echo "  <td>\n";
        echo "      <textarea name=\"comments\" rows=\"5\" cols=\"75\">\n";
        if (isset($comment->comments)) {
            echo $comment->comments;
            }
        echo "      </textarea>\n";
        echo "  </td></tr></table>\n";
        echo "<input type=\"submit\" value=\"".get_string("savemycomment", "workshop")."\" />\n";
        echo "</div></form>\n";
        workshop_print_assessment($workshop, $assessment);
        }


    /*********************** edit assessment elements (for teachers) ***********************/
    elseif ($action == 'editelements') {

        require_capability('mod/workshop:manage', $context);

        $count = count_records("workshop_grades", "workshopid", $workshop->id);
        if ($count) {
            notify(get_string("warningonamendingelements", "workshop"));
        }
        // set up heading, form and table
        print_heading_with_help(get_string("editingassessmentelements", "workshop"), "elements", "workshop");
        ?>
        <form id="form" method="post" action="assessments.php">
        <input type="hidden" name="id" value="<?php echo $cm->id ?>" />
        <input type="hidden" name="action" value="insertelements" />
        <div class="boxaligncenter"><table cellpadding="5" border="1">
        <?php

        // get existing elements, if none set up appropriate default ones
        if ($elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC" )) {
            foreach ($elementsraw as $element) {
                $elements[] = $element;   // to renumber index 0,1,2...
            }
        }
        // check for missing elements (this happens either the first time round or when the number of elements is icreased)
        for ($i=0; $i<$workshop->nelements; $i++) {
            if (!isset($elements[$i])) {
                $elements[$i]->description = '';
                $elements[$i]->scale =0;
                $elements[$i]->maxscore = 0;
                $elements[$i]->weight = 11;
            }
        }

        switch ($workshop->gradingstrategy) {
            case 0: // no grading
                for ($i=0; $i<$workshop->nelements; $i++) {
                    $iplus1 = $i+1;
                    echo "<tr valign=\"top\">\n";
                    echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
                    echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
                    echo "  </td></tr>\n";
                    echo "<tr valign=\"top\">\n";
                    echo "  <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n";
                    echo "</tr>\n";
                }
                break;

            case 1: // accumulative grading
                // set up scales name
                foreach ($WORKSHOP_SCALES as $KEY => $SCALE) {
                    $SCALES[] = $SCALE['name'];
                }
                for ($i=0; $i<$workshop->nelements; $i++) {
                    $iplus1 = $i+1;
                    echo "<tr valign=\"top\">\n";
                    echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
                    echo "<td><textarea name=\"description[]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
                    echo "  </td></tr>\n";
                    echo "<tr valign=\"top\">\n";
                    echo "  <td align=\"right\"><b>". get_string("typeofscale", "workshop"). ":</b></td>\n";
                    echo "<td valign=\"top\">\n";
                    choose_from_menu($SCALES, "scale[]", $elements[$i]->scale, "");
                    if ($elements[$i]->weight == '') { // not set
                        $elements[$i]->weight = 11; // unity
                    }
                    echo "</td></tr>\n";
                    echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
                    workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
                    echo "      </td>\n";
                    echo "</tr>\n";
                    echo "<tr valign=\"top\">\n";
                    echo "  <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n";
                    echo "</tr>\n";
                }
                break;

            case 2: // error banded grading
                for ($i=0; $i<$workshop->nelements; $i++) {
                    $iplus1 = $i+1;
                    echo "<tr valign=\"top\">\n";
                    echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
                    echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
                    echo "  </td></tr>\n";
                    if ($elements[$i]->weight == '') { // not set
                        $elements[$i]->weight = 11; // unity
                        }
                    echo "</tr>\n";
                    echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
                    workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
                    echo "      </td>\n";
                    echo "</tr>\n";
                    echo "<tr valign=\"top\">\n";
                    echo "  <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n";
                    echo "</tr>\n";
                }
                echo "</div></table><br />\n";
                echo "<div style=\"text-align:center\"><b>".get_string("gradetable","workshop")."</b></div>\n";
                echo "<div class=\"boxaligncenter\"><table cellpadding=\"5\" border=\"1\"><tr><td align=\"CENTER\">".
                    get_string("numberofnegativeresponses", "workshop");
                echo "</td><td>". get_string("suggestedgrade", "workshop")."</td></tr>\n";
                for ($j = $workshop->grade; $j >= 0; $j--) {
                    $numbers[$j] = $j;
                }
                for ($i=0; $i<=$workshop->nelements; $i++) {
                    echo "<tr><td align=\"CENTER\">$i</td><td align=\"CENTER\">";
                    if (!isset($elements[$i])) {  // the "last one" will be!
                        $elements[$i]->description = "";
                        $elements[$i]->maxscore = 0;
                    }
                    choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
                    echo "</td></tr>\n";
                }
                echo "</table></div>\n";
                break;

            case 3: // criterion grading
                for ($j = 100; $j >= 0; $j--) {
                    $numbers[$j] = $j;
                }
                for ($i=0; $i<$workshop->nelements; $i++) {
                    $iplus1 = $i+1;
                    echo "<tr valign=\"top\">\n";
                    echo "  <td align=\"right\"><b>". get_string("criterion","workshop")." $iplus1:</b></td>\n";
                    echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
                    echo "  </td></tr>\n";
                    echo "<tr><td><b>". get_string("suggestedgrade", "workshop").":</b></td><td>\n";
                    choose_from_menu($numbers, "maxscore[$i]", $elements[$i]->maxscore, "");
                    echo "</td></tr>\n";
                    echo "<tr valign=\"top\">\n";
                    echo "  <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n";
                    echo "</tr>\n";
                }
                break;

            case 4: // rubric
                for ($j = 100; $j >= 0; $j--) {
                    $numbers[$j] = $j;
                }
                if ($rubricsraw = get_records("workshop_rubrics", "workshopid", $workshop->id)) {
                    foreach ($rubricsraw as $rubric) {
                        $rubrics[$rubric->elementno][$rubric->rubricno] = $rubric->description;   // reindex 0,1,2...
                    }
                }
                for ($i=0; $i<$workshop->nelements; $i++) {
                    $iplus1 = $i+1;
                    echo "<tr valign=\"top\">\n";
                    echo "  <td align=\"right\"><b>". get_string("element","workshop")." $iplus1:</b></td>\n";
                    echo "<td><textarea name=\"description[$i]\" rows=\"3\" cols=\"75\">".$elements[$i]->description."</textarea>\n";
                    echo "  </td></tr>\n";
                    echo "<tr valign=\"top\"><td align=\"right\"><b>".get_string("elementweight", "workshop").":</b></td><td>\n";
                    workshop_choose_from_menu($WORKSHOP_EWEIGHTS, "weight[]", $elements[$i]->weight, "");
                    echo "      </td>\n";
                    echo "</tr>\n";

                    for ($j=0; $j<5; $j++) {
                        $jplus1 = $j+1;
                        if (empty($rubrics[$i][$j])) {
                            $rubrics[$i][$j] = "";
                        }
                        echo "<tr valign=\"top\">\n";
                        echo "  <td align=\"right\"><b>". get_string("grade","workshop")." $j:</b></td>\n";
                        echo "<td><textarea name=\"rubric[$i][$j]\" rows=\"3\" cols=\"75\">".$rubrics[$i][$j]."</textarea>\n";
                        echo "  </td></tr>\n";
                        }
                    echo "<tr valign=\"top\">\n";
                    echo "  <td colspan=\"2\" class=\"workshopassessmentheading\">&nbsp;</td>\n";
                    echo "</tr>\n";
                    }
                break;
            }
        // close table and form

        ?>
        </table><br />
        <input type="submit" value="<?php  print_string("savechanges") ?>" />
        <input type="submit" name="cancel" value="<?php  print_string("cancel") ?>" />
        </div>
        </form>
        <?php
    }


    /*************** grade all assessments (by teacher) ***************************/
    elseif ($action == 'gradeallassessments') {

        require_capability('mod/workshop:manage', $context);

        print_heading(get_string("gradingallassessments", "workshop"));
        workshop_grade_assessments($workshop);
        print_continue("view.php?id=$cm->id");
    }


    /*************** grade (student's) assessment (by teacher) ***************************/
    elseif ($action == 'gradeassessment') {

        require_capability('mod/workshop:manage', $context);

        print_heading_with_help(get_string("gradeassessment", "workshop"), "gradingassessments", "workshop");
        // get assessment record
        if (!$assessmentid = $aid) {
            error("Assessment id not given");
        }
        $assessment = get_record("workshop_assessments", "id", $assessmentid);
        if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
            error("Submission not found");
        }
        // get the teacher's assessment first
        if ($teachersassessment = workshop_get_submission_assessment($submission, $USER)) {
            echo "<div style=\"text-align:center\"><b>".get_string("teacherassessments", "workshop", $course->teacher)."</b></div>\n";
            workshop_print_assessment($workshop, $teachersassessment);
        }
        // now the student's assessment (don't allow changes)
        $user = get_record("user", "id", $assessment->userid);
        echo "<div style=\"text-align:center\"><b>".get_string("assessmentby", "workshop", $user->firstname." ".$user->lastname)."</b></div>\n";
        workshop_print_assessment($workshop, $assessment);

        include('assessment_grading_form.html');
        die;
    }


    /*************** insert (new) comment (by author, assessor or teacher) ***************************/
    elseif ($action == 'insertcomment') {
        $timenow = time();

        $form = (object)$_POST;

        if (!$assessment = get_record("workshop_assessments", "id", $aid)) {
            error("Unable to insert comment");
            }
        // save the comment...
        $comment->workshopid = $workshop->id;
        $comment->assessmentid   = $assessment->id;
        $comment->userid   = $USER->id;
        $comment->timecreated   = $timenow;
        $comment->comments   = clean_param($form->comments, PARAM_CLEAN);
        if (!$comment->id = insert_record("workshop_comments", $comment)) {
            error("Could not insert workshop comment!");
            }

        add_to_log($course->id, "workshop", "comment", "view.php?id=$cm->id", "$comment->id");

        print_continue("viewassessment.php?id=$cm->id&amp;aid=$assessment->id");
        }


    /*********************** insert/update assignment elements (for teachers)***********************/
    elseif ($action == 'insertelements') {

        require_capability('mod/workshop:manage', $context);

        $form = data_submitted();

        // let's not fool around here, dump the junk!
        delete_records("workshop_elements", "workshopid", $workshop->id);

        // determine wich type of grading
        switch ($workshop->gradingstrategy) {
            case 0: // no grading
                // Insert all the elements that contain something
                foreach ($form->description as $key => $description) {
                    if ($description) {
                        unset($element);
                        $element->description   = $description;
                        $element->workshopid = $workshop->id;
                        $element->elementno = $key;
                        if (!$element->id = insert_record("workshop_elements", $element)) {
                            error("Could not insert workshop element!");
                        }
                    }
                }
                break;

            case 1: // accumulative grading
                // Insert all the elements that contain something
                foreach ($form->description as $key => $description) {
                    if ($description) {
                        unset($element);
                        $element->description   = $description;
                        $element->workshopid = $workshop->id;
                        $element->elementno = clean_param($key, PARAM_INT);
                        if (isset($form->scale[$key])) {
                            $element->scale = $form->scale[$key];
                            switch ($WORKSHOP_SCALES[$form->scale[$key]]['type']) {
                                case 'radio' :  $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size'] - 1;
                                                        break;
                                case 'selection' :  $element->maxscore = $WORKSHOP_SCALES[$form->scale[$key]]['size'];
                                                        break;
                            }
                        }
                        if (isset($form->weight[$key])) {
                            $element->weight = $form->weight[$key];
                        }
                        if (!$element->id = insert_record("workshop_elements", $element)) {
                            error("Could not insert workshop element!");
                        }
                    }
                }
                break;

            case 2: // error banded grading...
            case 3: // ...and criterion grading
                // Insert all the elements that contain something, the number of descriptions is one less than the number of grades
                foreach ($form->maxscore as $key => $themaxscore) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->elementno = clean_param($key, PARAM_INT);
                    $element->maxscore = $themaxscore;
                    if (isset($form->description[$key])) {
                        $element->description   = $form->description[$key];
                    }
                    if (isset($form->weight[$key])) {
                        $element->weight = $form->weight[$key];
                    }
                    if (!$element->id = insert_record("workshop_elements", $element)) {
                        error("Could not insert workshop element!");
                    }
                }
                break;

            case 4: // ...and criteria grading
                // Insert all the elements that contain something
                foreach ($form->description as $key => $description) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->elementno = clean_param($key, PARAM_INT);
                    $element->description   = $description;
                    $element->weight = $form->weight[$key];
                    for ($j=0;$j<5;$j++) {
                        if (empty($form->rubric[$key][$j]))
                            break;
                    }
                    $element->maxscore = $j - 1;
                    if (!$element->id = insert_record("workshop_elements", $element)) {
                        error("Could not insert workshop element!");
                    }
                }
                // let's not fool around here, dump the junk!
                delete_records("workshop_rubrics", "workshopid", $workshop->id);
                for ($i=0;$i<$workshop->nelements;$i++) {
                    for ($j=0;$j<5;$j++) {
                        unset($element);
                        if (empty($form->rubric[$i][$j])) {  // OK to have an element with fewer than 5 items
                             break;
                         }
                        $element->workshopid = $workshop->id;
                        $element->elementno = $i;
                        $element->rubricno = $j;
                        $element->description   = $form->rubric[$i][$j];
                        if (!$element->id = insert_record("workshop_rubrics", $element)) {
                            error("Could not insert workshop element!");
                        }
                    }
                }
                break;
        } // end of switch
        echo "</div>"; // not sure where this one came from MDL-7861
        redirect("view.php?id=$cm->id", get_string("savedok","workshop"));
    }


    /*********************** list assessments for grading (Student submissions)(by teachers)***********************/
    elseif ($action == 'listungradedstudentsubmissions') {

        require_capability('mod/workshop:manage', $context);

        workshop_list_ungraded_assessments($workshop, "student");
        print_continue("view.php?id=$cm->id");
        }


    /*********************** list assessments for grading (Teacher submissions) (by teachers)***********************/
    elseif ($action == 'listungradedteachersubmissions') {

        require_capability('mod/workshop:manage', $context);

        workshop_list_ungraded_assessments($workshop, "teacher");
        print_continue("view.php?id=$cm->id");
        }


    /****************** list teacher submissions ***********************/
    elseif ($action == 'listteachersubmissions') {

        workshop_list_teacher_submissions($workshop, $USER);
        print_continue("view.php?id=$cm->id");
    }


    /******************* regrade student assessments ************************************/
    elseif ($action == 'regradestudentassessments' ) {

        $timenow = time();
        require_capability('mod/workshop:manage', $context);
        // get all the submissions...
        if ($submissions = get_records("workshop_submissions", "workshopid", $workshop->id)) {
            foreach ($submissions as $submission) {
                // ...if cold...
                if (($submission->timecreated + $CFG->maxeditingtime) < $timenow) {
                    // ...clear assessment count so workshop_grade_assessments() can do its thing
                    set_field("workshop_submissions", "nassessments", 0, "id", $submission->id);
                }
            }
        }
        echo "<pre>";
        workshop_grade_assessments($workshop);
        echo '</pre>';
        print_continue("submissions.php?id=$cm->id&action=adminlist");
    }


    /*************** remove stock comment (by teacher ) ***************************/
    elseif ($action == 'removestockcomment') {

        if (empty($aid) or empty($stockcommentid)) {
            error("Workshop Assessment id and/or Stock Comment id missing");
        }

        require_capability('mod/workshop:manage', $context);

        if (!$assessment = get_record("workshop_assessments", "id", $aid)) {
            error("workshop assessment is misconfigured");
        }
        $form = data_submitted('nomatch'); //Nomatch because we can come from assess.php

        // delete the comment from the stock comments table
        if (!delete_records("workshop_stockcomments", "id", $stockcommentid)) {
            error("Could not remove comment from the comment bank");
        }

        // now upate the assessment (just the elements, the assessment itself is not updated)

        // first get the assignment elements for maxscores and weights...
        $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
        if (count($elementsraw) < $workshop->nelements) {
            print_string("noteonassignmentelements", "workshop");
        }
        if ($elementsraw) {
            foreach ($elementsraw as $element) {
                $elements[] = $element;   // to renumber index 0,1,2...
            }
        } else {
            $elements = null;
        }

        $timenow = time();
        // don't fiddle about, delete all the old and add the new!
        delete_records("workshop_grades", "assessmentid",  $assessment->id);


        //determine what kind of grading we have
        switch ($workshop->gradingstrategy) {
            case 0: // no grading
                // Insert all the elements that contain something
                for ($i =0; $i < $workshop->nelements; $i++) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = $i;
                    $element->feedback   = clean_param($form->{"feedback_$i"}, PARAM_CLEAN);
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                    }
                }
                $grade = 0; // set to satisfy save to db
                break;

            case 1: // accumulative grading
                // Insert all the elements that contain something
                foreach ($form->grade as $key => $thegrade) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = clean_param($key, PARAM_INT);
                    $element->feedback   = clean_param($form->{"feedback_$key"}, PARAM_CLEAN);
                    $element->grade = $thegrade;
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                        }
                    }
                // now work out the grade...
                $rawgrade=0;
                $totalweight=0;
                foreach ($form->grade as $key => $grade) {
                    $maxscore = $elements[$key]->maxscore;
                    $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
                    if ($weight > 0) {
                        $totalweight += $weight;
                    }
                    $rawgrade += ($grade / $maxscore) * $weight;
                    // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />";
                }
                $grade = 100.0 * ($rawgrade / $totalweight);
                break;

            case 2: // error banded graded
                // Insert all the elements that contain something
                $error = 0.0;
                for ($i =0; $i < $workshop->nelements; $i++) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = $i;
                    $element->feedback   = clean_param($form->{"feedback_$i"}, PARAM_CLEAN);
                    $element->grade = $form->grade[$i];
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                    }
                    if (empty($form->grade[$i])){
                        $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight];
                    }
                }
                // now save the adjustment
                unset($element);
                $i = $workshop->nelements;
                $element->workshopid = $workshop->id;
                $element->assessmentid = $assessment->id;
                $element->elementno = $i;
                $element->grade = $form->grade[$i];
                if (!$element->id = insert_record("workshop_grades", $element)) {
                    error("Could not insert workshop grade!");
                }
                $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade;
                // do sanity check
                if ($grade < 0) {
                    $grade = 0;
                } elseif ($grade > 100) {
                    $grade = 100;
                }
                echo "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\n";
                break;

            case 3: // criteria grading
                // save in the selected criteria value in element zero,
                unset($element);
                $element->workshopid = $workshop->id;
                $element->assessmentid = $assessment->id;
                $element->elementno = 0;
                $element->grade = $form->grade[0];
                if (!$element->id = insert_record("workshop_grades", $element)) {
                    error("Could not insert workshop grade!");
                }
                // now save the adjustment in element one
                unset($element);
                $element->workshopid = $workshop->id;
                $element->assessmentid = $assessment->id;
                $element->elementno = 1;
                $element->grade = $form->grade[1];
                if (!$element->id = insert_record("workshop_grades", $element)) {
                    error("Could not insert workshop grade!");
                }
                $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]);
                break;

            case 4: // rubric grading (identical to accumulative grading)
                // Insert all the elements that contain something
                foreach ($form->grade as $key => $thegrade) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = clean_param($key, PARAM_INT);
                    $element->feedback   = clean_param($form->{"feedback_$key"}, PARAM_CLEAN);
                    $element->grade = $thegrade;
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                    }
                }
                // now work out the grade...
                $rawgrade=0;
                $totalweight=0;
                foreach ($form->grade as $key => $grade) {
                    $maxscore = $elements[$key]->maxscore;
                    $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
                    if ($weight > 0) {
                        $totalweight += $weight;
                    }
                    $rawgrade += ($grade / $maxscore) * $weight;
                }
                $grade = 100.0 * ($rawgrade / $totalweight);
                break;

        } // end of switch


        // any comment?
        if (!empty($form->generalcomment)) { // update the object (no need to update the db record)
            $assessment->generalcomment = clean_param($form->generalcomment, PARAM_CLEAN);
        }

        // redisplay form, going back to original returnto address
        workshop_print_assessment($workshop, $assessment, true, true, $form->returnto);

        // add_to_log($course->id, "workshop", "assess", "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$assessment->id", "$cm->id");

    }


    /*************** update assessment (by teacher or student) ***************************/
    elseif ($action == 'updateassessment') {

        if (empty($aid)) {
            error("Workshop Assessment id missing");
        }

        if (! $assessment = get_record("workshop_assessments", "id", $aid)) {
            error("workshop assessment is misconfigured");
        }

        // first get the assignment elements for maxscores and weights...
        $elementsraw = get_records("workshop_elements", "workshopid", $workshop->id, "elementno ASC");
        if (count($elementsraw) < $workshop->nelements) {
            print_string("noteonassignmentelements", "workshop");
        }
        if ($elementsraw) {
            foreach ($elementsraw as $element) {
                $elements[] = $element;   // to renumber index 0,1,2...
            }
        } else {
            $elements = null;
        }

        $timenow = time();
        // don't fiddle about, delete all the old and add the new!
        delete_records("workshop_grades", "assessmentid",  $assessment->id);

        $form = data_submitted('nomatch'); //Nomatch because we can come from assess.php

        //determine what kind of grading we have
        switch ($workshop->gradingstrategy) {
            case 0: // no grading
                // Insert all the elements that contain something
                for ($i = 0; $i < $workshop->nelements; $i++) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = $i;
                    $element->feedback = clean_param($form->{"feedback_$i"}, PARAM_CLEAN);
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                    }
                }
                $grade = 0; // set to satisfy save to db
                break;

            case 1: // accumulative grading
                // Insert all the elements that contain something
                foreach ($form->grade as $key => $thegrade) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = $key;
                    $element->feedback   = clean_param($form->{"feedback_$key"}, PARAM_CLEAN);
                    $element->grade = $thegrade;
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                        }
                    }
                // now work out the grade...
                $rawgrade=0;
                $totalweight=0;
                foreach ($form->grade as $key => $grade) {
                    $maxscore = $elements[$key]->maxscore;
                    $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
                    if ($weight > 0) {
                        $totalweight += $weight;
                    }
                    $rawgrade += ($grade / $maxscore) * $weight;
                    // echo "\$key, \$maxscore, \$weight, \$totalweight, \$grade, \$rawgrade : $key, $maxscore, $weight, $totalweight, $grade, $rawgrade<br />";
                }
                $grade = 100.0 * ($rawgrade / $totalweight);
                break;

            case 2: // error banded graded
                // Insert all the elements that contain something
                $error = 0.0;
                for ($i =0; $i < $workshop->nelements; $i++) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = $i;
                    $element->feedback   = $form->{"feedback_$i"};
                    $element->grade = clean_param($form->grade[$i], PARAM_CLEAN);
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                    }
                    if (empty($form->grade[$i])){
                        $error += $WORKSHOP_EWEIGHTS[$elements[$i]->weight];
                    }
                }
                // now save the adjustment
                unset($element);
                $i = $workshop->nelements;
                $element->workshopid = $workshop->id;
                $element->assessmentid = $assessment->id;
                $element->elementno = $i;
                $element->grade = $form->grade[$i];
                if (!$element->id = insert_record("workshop_grades", $element)) {
                    error("Could not insert workshop grade!");
                }
                $grade = ($elements[intval($error + 0.5)]->maxscore + $form->grade[$i]) * 100 / $workshop->grade;
                // do sanity check
                if ($grade < 0) {
                    $grade = 0;
                } elseif ($grade > 100) {
                    $grade = 100;
                }
                echo "<b>".get_string("weightederrorcount", "workshop", intval($error + 0.5))."</b>\n";
                break;

            case 3: // criteria grading
                // save in the selected criteria value in element zero,
                unset($element);
                $element->workshopid = $workshop->id;
                $element->assessmentid = $assessment->id;
                $element->elementno = 0;
                $element->grade = $form->grade[0];
                if (!$element->id = insert_record("workshop_grades", $element)) {
                    error("Could not insert workshop grade!");
                }
                // now save the adjustment in element one
                unset($element);
                $element->workshopid = $workshop->id;
                $element->assessmentid = $assessment->id;
                $element->elementno = 1;
                $element->grade = $form->grade[1];
                if (!$element->id = insert_record("workshop_grades", $element)) {
                    error("Could not insert workshop grade!");
                }
                $grade = ($elements[$form->grade[0]]->maxscore + $form->grade[1]);
                break;

            case 4: // rubric grading (identical to accumulative grading)
                // Insert all the elements that contain something
                foreach ($form->grade as $key => $thegrade) {
                    unset($element);
                    $element->workshopid = $workshop->id;
                    $element->assessmentid = $assessment->id;
                    $element->elementno = clean_param($key, PARAM_INT);
                    $element->feedback = clean_param($form->{"feedback_$key"}, PARAM_CLEAN);
                    $element->grade = $thegrade;
                    if (!$element->id = insert_record("workshop_grades", $element)) {
                        error("Could not insert workshop grade!");
                    }
                }
                // now work out the grade...
                $rawgrade=0;
                $totalweight=0;
                foreach ($form->grade as $key => $grade) {
                    $maxscore = $elements[$key]->maxscore;
                    $weight = $WORKSHOP_EWEIGHTS[$elements[$key]->weight];
                    if ($weight > 0) {
                        $totalweight += $weight;
                    }
                    $rawgrade += ($grade / $maxscore) * $weight;
                }
                $grade = 100.0 * ($rawgrade / $totalweight);
                break;

        } // end of switch

        // update the time of the assessment record (may be re-edited)...
        set_field("workshop_assessments", "timecreated", $timenow, "id", $assessment->id);

        if (!$submission = get_record("workshop_submissions", "id", $assessment->submissionid)) {
            error ("Updateassessment: submission record not found");
        }

        // if the workshop does need peer agreement AND it's self assessment then set timeagreed
        if ($workshop->agreeassessments and ($submission->userid == $assessment->userid)) {
            set_field("workshop_assessments", "timeagreed", $timenow, "id", $assessment->id);
        }

        // set grade...
        set_field("workshop_assessments", "grade", $grade, "id", $assessment->id);
        // ...and clear the timegraded but set the graddinggrade to maximum, may be reduced subsequently...
        set_field("workshop_assessments", "timegraded", 0, "id", $assessment->id);
        set_field("workshop_assessments", "gradinggrade", 100, "id", $assessment->id);
        // ...and the resubmission flag
        set_field("workshop_assessments", "resubmission", 0, "id", $assessment->id);

        // if there's examples or peer assessments clear the counter in the submission so that
        // all assessments for this submission will be regraded
        if ($workshop->ntassessments or $workshop->nsassessments) {
            set_field("workshop_submissions", "nassessments", 0, "id", $submission->id);
            workshop_grade_assessments($workshop);
        } else { // it could be self assessment....
            // now see if there's a corresponding assessment so that the gradinggrade can be set
            if (workshop_is_teacher($workshop)) {
                // see if there's are student assessments, if so set their gradinggrade
                if ($assessments = workshop_get_assessments($submission)) {
                    foreach($assessments as $studentassessment) {
                        // skip if it's not a student assessment
                        if (!workshop_is_student($workshop, $studentassessment->userid)) {
                            continue;
                        }
                        $gradinggrade = workshop_compare_assessments($workshop, $assessment, $studentassessment);
                        set_field("workshop_assessments", "timegraded", $timenow, "id", $studentassessment->id);
                        set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $studentassessment->id);
                    }
                }
            } else { //it's a student assessment, see if there's a corresponding teacher's assessment
                if ($assessments = workshop_get_assessments($submission)) {
                    foreach($assessments as $teacherassessment) {
                        if (workshop_is_teacher($workshop, $teacherassessment->userid)) {
                            $gradinggrade = workshop_compare_assessments($workshop, $assessment, $teacherassessment);
                            set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
                            set_field("workshop_assessments", "gradinggrade", $gradinggrade, "id", $assessment->id);
                            break; // only look for the first teacher assessment
                        }
                    }
                }
            }
        }

        // any comment?
        if (!empty($form->generalcomment)) {
            set_field("workshop_assessments", "generalcomment", clean_param($form->generalcomment, PARAM_CLEAN), "id", $assessment->id);
        }

        add_to_log($course->id, "workshop", "assess",
                "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$assessment->id", "$cm->id");

        // set up return address
        if (!$returnto = $form->returnto) {
            $returnto = "view.php?id=$cm->id";
        }

        // show grade if grading strategy is not zero
        if ($workshop->gradingstrategy) {
            echo "</div>"; // MDL-7861, this is from <div id=page>
            redirect($returnto, get_string("thegradeis", "workshop").": ".
                    number_format($grade * $workshop->grade / 100, 2).
                    " (".get_string("maximumgrade")." ".number_format($workshop->grade).")");
        }
        else {
            redirect($returnto);
        }
        
    }


    /****************** update comment (by author, assessor or teacher) ********************/
    elseif ($action == 'updatecomment') {
        $timenow = time();

        $form = (object)$_POST;

        // get the comment record...
        if (!$comment = get_record("workshop_comments", "id", $_POST['cid'])) {
            error("Update to Comment failed");
        }
        if (!$assessment = get_record("workshop_assessments", "id", $comment->assessmentid)) {
            error("Update Comment: Assessment not found");
        }
        //save the comment for the assessment...
        if (isset($form->comments)) {
            set_field("workshop_comments", "comments", $form->comments, "id", $comment->id);
            set_field("workshop_comments", "timecreated", $timenow, "id", $comment->id);
            // ..and kick to comment into life (probably not needed but just in case)
            set_field("workshop_comments", "mailed", 0, "id", $comment->id);
            echo "<centre><b>".get_string("savedok", "workshop")."</b></div><br />\n";

            add_to_log($course->id, "workshop", "comment",
                    "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$comment->id");
        }

        print_continue("viewassessment.php?id=$cm->id&amp;aid=$assessment->id");
    }


    /****************** update grading (by teacher) ***************************/
    elseif ($action == 'updategrading') {
        $timenow = time();

        require_capability('mod/workshop:manage', $context);

        $form = (object)$_POST;

        if (!$assessment = get_record("workshop_assessments", "id", $_POST['aid'])) {
            error("Update Grading failed");
        }
        //save the comment and grade for the assessment
        if (isset($form->teachercomment)) {
            set_field("workshop_assessments", "teachercomment", $form->teachercomment, "id", $assessment->id);
            set_field("workshop_assessments", "gradinggrade", $form->gradinggrade, "id", $assessment->id);
            set_field("workshop_assessments", "timegraded", $timenow, "id", $assessment->id);
            set_field("workshop_assessments", "mailed", 0, "id", $assessment->id);
            set_field("workshop_assessments", "teachergraded", 1, "id", $assessment->id);
            echo "<centre><b>".get_string("savedok", "workshop")."</b></centre><br />\n";

            add_to_log($course->id, "workshop", "grade",
                 "viewassessment.php?id=$cm->id&amp;aid=$assessment->id", "$assessment->id", "$cm->id");
        }
        redirect($form->redirect);
    }


    /****************** view all assessments ***********************/
    elseif ($action == 'viewallassessments') {

        if (!$submission = get_record("workshop_submissions", "id", $sid)) {
            error("View All Assessments: submission record not found");
        }

        if ($assessments = workshop_get_assessments($submission)) {
            foreach ($assessments as $assessment) {
                workshop_print_assessment($workshop, $assessment);
            }
        }
        // only called from list all submissions
        print_continue("submissions.php?action=listallsubmissions&amp;id=$cm->id");
    }

    /*************** no man's land **************************************/
    else {
        error("Fatal Error: Unknown Action: ".$action."\n");
    }
    print_footer($course);

?>