(* ::Package:: *) (* only counts the click history true or false *) qClick[n_,i_,s_,a2_,diag_]:=Module[{}, qAppend[{n,i,Boole[s],Last[StringSplit[DateString[]]],a2,diag}]; ]; qClickPlus[n0_]:=DynamicModule[{n=n0}, qAppend[{n,0,1}]; ]; qAppend[text_]:=Module[{s,fname}, (*fname=FileNameJoin[{$TemporaryDirectory,StringReplace[DateString[], {" "->"_", ":"->"_"}]<>"symbolix.txt"}];*) fname=FileNameJoin[{$UserDocumentsDirectory,"DARADARADARA"<>"symbolix.txt"}]; s=OpenAppend[fname]; Write[s,text]; {Close[s], fname} ]; qSendLocal[path_]:=DynamicModule[{status="",a, body,text,ret1,ret2,tmp="",msg,res=False, track,res2,arg,Gg2, Gg3={},qClicks,q,first=True,studentID="", buttonEnable=False ,resF ,ID}, Manipulate[ (*Refresh[If[first==True,studentID=readID[], If[readID[]==="",studentID,studentID=readID[]]],UpdateInterval->1];*) text=Dynamic[status]; buttonEnable=Dynamic[If[studentID!="", True]]; body={{Dynamic[If[res==True,Text[Style["Checked Marks Indicate Correct Answers\n"<>"\nTo Track this test: email "<>ToString[track]<>", "<>IntegerString[Hash[ToString[Gg2]<>ToString[track]<>"Mehran1339","MD5"],16]<>" to Deidre Lam \n"<>"Test results stored in file: "<>res2[[2]],Red,Background->Yellow]], ""]],Dynamic[If[res==True,CheckboxBar[Range[qNum]*Gg3,Range[qNum], Appearance->"Vertical",Enabled->False], ""]], Dynamic[Which[(Length[Gg3]-Total[Gg3]<=1)&& (res == True), "\n\!\(\* StyleBox[\"Congratulations\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"!\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"You\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"passed\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"the\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)"<> examName <>" \!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"..\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\".\",\nFontColor->RGBColor[1, 0, 0]]\)\n\!\(\* StyleBox[\"Grade\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\":\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)"<>ToString[Ceiling[qTrunc4[Mean[Gg3]]*100]],(Length[Gg3]-Total[Gg3]>1)&& (res == True), "\n \!\(\* StyleBox[\"Please\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"study\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"the\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)"<> examName <>" \!\(\* StyleBox[\"and\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"write\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"this\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"test\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"again\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\".\",\nFontColor->RGBColor[1, 0, 0]]\)\n\!\(\* StyleBox[\"Grade\",\nFontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\":\",\nFontColor->RGBColor[1, 0, 0]]\) "<>ToString[Ceiling[qTrunc4[Mean[Gg3]]*100]],True,""]]},{"","",""}}; Deploy[ Style[Panel[Grid[Transpose[body],Alignment->Left,Spacings->{4,0.5}(*,ItemSize->20)*)],text,ImageMargins->1],DefaultOptions->{InputField->{ContinuousAction->True},FontSize->Large}]], {{a, 0,""}, Column[{InputField[Dynamic[studentID], String, ContinuousAction->True,FieldHint->"Enter your ID"],Style[Dynamic[ Button["Send Answers",Off[Import::nffil];Off[DeleteFile::nffil]; If[ first == True,q=Import[FileNameJoin[{$UserDocumentsDirectory,"DARADARADARA"<>"symbolix.txt"}],"List"]; Gg2=DeleteDuplicates[Table[ToExpression[q[[i]]],{i, 1, Length[q]}]]; Table[qClicks[[Gg2[[i]][[1]]]]=Gg2[[i]],{i,1 Length[Gg2]}]]; Gg2=qClicks[[1;;qNum]]; Gg3=Gg2[[1;;qNum,2]]; res=True; arg=studentID<>" , "<>examName2<>" , "<>ToString[Ceiling[qTrunc4[Mean[Gg3]]*100]]<>" , "<>ToString[Gg2]<>" , "<>examIDString2<>" , "<>DateString[]<>" , "<>ToString[track]<>" , "<>IntegerString[Hash[ToString[Gg3]<>ToString[track]<>"gilan1339","MD5"],16];res2=qFlushLAN[arg,studentID,path]; (* use this for debug, in production might not be used *) resF=URLFetch["http://symbolicexams.lossofgenerality.com/wp-content/plugins/test-receiver/results.php","Parameters"->{"results"->studentID<>" , "<>examName2<>" , "<>ToString[Ceiling[qTrunc4[Mean[Gg3]]*100]]<>" , "<>ToString[Gg2]<>" , "<>examIDString2<>" , "<>DateString[]<>" , "<>ToString[track]<>" , "<>IntegerString[Hash[ToString[Gg3]<>ToString[track]<>"Mehran1339","MD5"],16]},"ReadTimeout"->10,"ConnectTimeout"->50,"Method"->"POST"]; (*qLog[ToString[resF],studentID];*) status=If[resF===$Failed,"Failure to Send Answers, see MY DOCUMENTS for results file\nTake snapshot of the screen","Answers Sent, Good Luck!\n"];If[ first==True,DeleteFile[FileNameJoin[{$UserDocumentsDirectory,"DARADARADARA"<>"symbolix.txt"}]]];first=False;DeleteFile[FileNameJoin[{$UserDocumentsDirectory,"id"<>"symbolix.txt"}]];(*<>ToString[res2[[1]]]*)(*Clear["Global`*"];ClearAll[qClickPlus,qClick,readName]*),Method->"Queued" ,Enabled->buttonEnable]],DynamicEvaluationTimeout->10000] }]&}, TrackedSymbols->Manipulate, SaveDefinitions->True,AppearanceElements->None,SynchronousUpdating->False,ContinuousAction->False, Initialization:>(track=RandomInteger[{100000,900000}];qClicks = {{1, 0, -1, ""}, {2, 0, -1, ""}, {3, 0, -1, ""}, {4, 0, -1, ""}, {5, 0, -1, ""}, {6, 0, -1, ""},{7, 0, -1, ""},{8, 0, -1, ""},{9, 0, -1, ""},{10, 0, -1, ""}};first=True;studentID="";buttonEnable=False;Gg3={})] ]; qFlushLAN[text_, id_, path_] := Module[{s, fname}, (*fname=FileNameJoin[{$TemporaryDirectory,StringReplace[ DateString[], {" "->"_", ":"->"_"}]<>"symbolix.txt"}];*) fname = FileNameJoin[{path, If[id === "", "NOID", id] <> StringReplace[DateString[], {" " -> "_", ":" -> "_"}] <> "symbolix.txt"}]; s = OpenWrite[fname]; Write[s, text]; {Close[s], fname} ];