Advertisement
Guest User

Untitled

a guest
May 7th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 68.44 KB | None | 0 0
  1. //--------------------------------------------
  2. // FRONT-END
  3. // JASON POLAND
  4. //--------------------------------------------
  5.  
  6. //curlRegistrar.php
  7. <?php
  8. $data = $_POST['data'];
  9. $decode = json_decode($data);
  10. $curlId = $decode->curlid;
  11.  
  12. //Start POST for Question
  13. $curlInit = curl_init();
  14. $post = [ 'data' => $data ];
  15.  
  16. //init
  17. $url = "";
  18. $message = "";
  19.  
  20. //null check
  21. if(is_null($data)) { $message .= "Data is Not Defined \n"; }
  22. if(is_null($curlId)) { $message .= "CurlId is Not Defined \n"; $curlId=""; }
  23.  
  24. //curl options
  25. curl_setopt($curlInit, CURLOPT_POST, 1);
  26. curl_setopt($curlInit, CURLOPT_RETURNTRANSFER, true);
  27.  
  28. switch ($curlId) {
  29. case "getquestion":
  30. $message .= "GETQUESTION - MID Curl \n";
  31. $url = "http://afsaccess1.njit.edu/~rap86/backCurlRegistrarCopy.php";
  32. break;
  33. case "gettest":
  34. $message .= "GETTEST - MID Curl \n";
  35. $url = "http://afsaccess1.njit.edu/~rap86/backCurlRegistrarCopy.php";
  36. break;
  37. case "modtest":
  38. $message .= "MODTEST - MID Curl \n";
  39. $url = "http://afsaccess1.njit.edu/~rap86/backCurlRegistrarCopy.php";
  40. break;
  41. case "updatetest":
  42. $message .= "UPDATETEST - MID Curl \n";
  43. $url = "http://afsaccess1.njit.edu/~rap86/backCurlRegistrarCopy.php";
  44. break;
  45. case "createtest":
  46. $message .= "CREATETEST - MID Curl \n";
  47. $url = "http://afsaccess1.njit.edu/~rap86/backCurlRegistrarCopy.php";
  48. break;
  49. case "createquestion":
  50. $message .= "CREATEQUESTION - MID Curl \n";
  51. $url = "http://afsaccess1.njit.edu/~rap86/backCurlRegistrarCopy.php";
  52. break;
  53. case "updatefeedback":
  54. $message .= "UPDATEFEEDBACK - MID Curl \n";
  55. $url = "http://afsaccess1.njit.edu/~rap86/backCurlRegistrarCopy.php";
  56. break;
  57. default:
  58. $message .= "Invalid/Unsupported Curl \n";
  59. break;
  60. }
  61. //curl fill-in options
  62. curl_setopt($curlInit, CURLOPT_URL, $url);
  63. curl_setopt($curlInit, CURLOPT_POSTFIELDS, http_build_query($post));
  64.  
  65. //json test function
  66. function isJson($string){
  67. return is_string($string) && is_array(json_decode($string, true)) && (json_last_error() == JSON_ERROR_NONE) ? true : false;
  68. }
  69. //execute curl
  70. $response = curl_exec($curlInit);
  71. curl_close($curlInit);
  72. if(isset($response)){
  73. if(isJson($response)){
  74. $decode2 = json_decode($response);
  75. $decode2->middebugmessage = $message;
  76. echo json_encode($decode2);
  77. }
  78. else{
  79. echo "\n Middle Debug: \n".$message."\n Back End Response: \n".$response;
  80. }
  81. }
  82. else{
  83. echo "No Curls Executed \n".$message;
  84. }
  85.  
  86. ?>
  87.  
  88. //Auth.js
  89.  
  90. // Setting up For Authentication
  91. //*********************************************************************************
  92. function createCookie( cookie_name, cookie_value, expire_indays){
  93. var d = new Date();
  94. d.setTime(d.getTime() + (expire_indays * 24 * 60 * 60 * 1000));
  95. var expires = "expires=" + d.toUTCString();
  96. document.cookie = cookie_name + "=" + cookie_value + ";" + expires + ";path=/";
  97. }
  98.  
  99. function getCookie( cookie_name ){
  100. var name = cookie_name + "=";
  101. var ca = document.cookie.split(';');
  102. for(var i = 0; i <ca.length; i++){
  103. var c = ca[i];
  104. while(c.charAt(0) == ' '){
  105. c = c.substring(1);
  106. }
  107. if( c.indexOf(name) == 0 ){
  108. return c.substring(name.length, c.length);
  109. }
  110. }
  111. return "";
  112. }
  113.  
  114. function checkAuth(accessLevel){
  115. var access = getCookie("access");
  116. var session = getCookie("session");
  117. //No Session Found |or| No Access - Redirect To Login
  118. if(session == "" || access == "" || session == "undefined"){ location.href = 'https://web.njit.edu/~jrp68/CS490/Login.html'; }
  119.  
  120. //Student Page
  121. if( accessLevel == "1" ){
  122. //Check if User is Student
  123. if( access == "2" ){
  124. //Not a Student! - redirect to Teacher homepage
  125. //alert("No Access!");
  126. location.href = 'https://web.njit.edu/~jrp68/CS490/teacherHomepage.html';
  127. }
  128. }
  129. //Teacher Page
  130. if( accessLevel == "2" ){
  131. //Check if User is Teacher
  132. if( access == "1"){
  133. //Not a Teacher! - redirect to Student homepage
  134. //alert("No Access!");
  135. location.href = 'https://web.njit.edu/~jrp68/CS490/studentHomepage.html';
  136. }
  137.  
  138. }
  139. }
  140.  
  141. function logout(){
  142. //Getting Values for Post
  143. var xhttp = new XMLHttpRequest();
  144. var session = getCookie("session");
  145. var query = 'sessionID=' + session + '&curlid=' + "logout";
  146.  
  147. xhttp.onreadystatechange = function(){
  148. if(this.readyState == 4 && this.status == 200){
  149. //Catching Invalid Responses
  150. try{
  151. var JsonStr = JSON.parse(this.responseText);
  152. if(JsonStr.debugmessage!=""){
  153. console.log("%c"+JsonStr.debugmessage,"color:orange");
  154. }
  155. console.log(JsonStr);
  156. if( JsonStr.logout == "0" ){
  157. //Error? - ?
  158. }
  159. if( JsonStr.logout == "1" ){
  160. //Successful Logout
  161. createCookie("session", "", 1);
  162. createCookie("access", "", 1);
  163. location.href = 'https://web.njit.edu/~jrp68/CS490/Login.html';
  164. }
  165. }
  166. catch(err){
  167. console.warn("Curl Returned a Message: "+this.responseText);
  168. }
  169.  
  170. }
  171. };
  172.  
  173. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  174. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  175. xhttp.send(query);
  176. }
  177.  
  178. //Login.js
  179.  
  180. //Allowing Enter key to Submit
  181. var input = document.getElementById("Pass");
  182. input.addEventListener("keyup", function(event){
  183. event.preventDefault();
  184. if(event.keyCode === 13){
  185. document.getElementById("enter").click();
  186. }
  187. });
  188.  
  189. //JS Functions Start
  190. //**********************************************************
  191. function sendPost(){
  192. //Getting Values for Post
  193. var xhttp = new XMLHttpRequest();
  194. var user = document.getElementById("UCID").value;
  195. var pass = document.getElementById("Pass").value;
  196. var query = 'user=' + user + '&pass=' + pass + '&curlid=' + "auth";
  197. createCookie("usernameTest", user, 2);
  198.  
  199. xhttp.onreadystatechange = function(){
  200. if(this.readyState == 4 && this.status == 200){
  201. //Catching Invalid Responses
  202. try{
  203. var JsonStr = JSON.parse(this.responseText);
  204. if(JsonStr.debugmessage!=""){
  205. console.log("%c"+JsonStr.debugmessage,"color:orange");
  206. }
  207. console.log(JsonStr);
  208.  
  209. if( JsonStr.dbresponse == "0" ){
  210. //Invalid Login
  211. document.getElementById("postResponse").innerHTML = "Invalid Credentials: ";
  212. }
  213. if( JsonStr.dbresponse == "1" ){
  214. //Student Login
  215. createCookie("access", "1", 2);
  216. createCookie("session", JsonStr.sid, 2);
  217. location.href = 'https://web.njit.edu/~jrp68/CS490/studentHomepage.html';
  218. }
  219. if( JsonStr.dbresponse == "2" ){
  220. //Teacher Login
  221. createCookie("access", "2", 2);
  222. createCookie("session", JsonStr.sid, 2);
  223. location.href = 'https://web.njit.edu/~jrp68/CS490/teacherHomepage.html';
  224. }
  225. }
  226. catch(err){
  227. console.warn("Curl Returned a Message: \n"+this.responseText);
  228. }
  229.  
  230. }
  231. };
  232.  
  233. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  234. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  235. xhttp.send(query);
  236. }
  237.  
  238. //PreviewGrade.js
  239.  
  240. //Setting up Page Title
  241. var test = getCookie("testName");
  242. var name = getCookie("studentName");
  243. var questionstable = [];
  244.  
  245. document.getElementById('testTitle').innerHTML = test;
  246. loadTestQuestions(test, name);
  247.  
  248.  
  249. function loadTestQuestions(test, user){
  250. //gettests
  251. //parse data and only use the data for user/test
  252.  
  253. //create tables for each questions
  254. var xhttp = new XMLHttpRequest();
  255. //Retrieve SessionID - function from Auth.js
  256. var sessionID = getCookie("session");
  257.  
  258. //Build Query
  259. var query = 'sessionID=' + sessionID + '&curlid=' + "gettest";
  260.  
  261. xhttp.onreadystatechange = function(){
  262. if(this.readyState == 4 && this.status == 200){
  263. //Catching Invalid Responses
  264. try{ var JsonStr = JSON.parse(this.responseText); }
  265. catch(err){ }
  266.  
  267. //Reset Current Test Search
  268. //document.getElementById("questionDisplay").innerHTML = "";
  269.  
  270. console.log(JsonStr);
  271. var currentHTML = document.getElementById("questionDisplay");
  272.  
  273. //TESTS
  274. for( var key in JsonStr.dbTests){
  275. if(key != test) { continue; } //If not this test dont include it
  276. //USERS
  277. for(var key2 in JsonStr.dbTests[key]){
  278. if(key2 != user) { continue; } //If not this user dont include it
  279. //QUESTIONS
  280. for( var key3 in JsonStr.dbTests[key][key2]['questions']){
  281. //Setup values
  282. var qName = key3;
  283. var fName = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['fname'];
  284. var studentAnswer = JsonStr.dbTests[key][key2]['questions'][key3]['studentanswer'];
  285. var autoFeedBack = JsonStr.dbTests[key][key2]['questions'][key3]['autofeedback'];
  286. var qWorth = JsonStr.dbTests[key][key2]['questions'][key3]['worth'];
  287. var qEarned = JsonStr.dbTests[key][key2]['questions'][key3]['earnedpoints'];
  288. var dfname = JsonStr.dbTests[key][key2]['questions'][key3]['dfname'];
  289. var dconstraint = JsonStr.dbTests[key][key2]['questions'][key3]['dconstraint'];
  290. var dcase1 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase1'];
  291. var dcase2 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase2'];
  292. var dcase3 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase3'];
  293. var dcase4 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase4'];
  294. var dcase5 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase5'];
  295. var dcase6 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase6'];
  296. var dcolon = JsonStr.dbTests[key][key2]['questions'][key3]['dcolon'];
  297. var srcase1 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase1'];
  298. var srcase2 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase2'];
  299. var srcase3 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase3'];
  300. var srcase4 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase4'];
  301. var srcase5 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase5'];
  302. var srcase6 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase6'];
  303.  
  304. var deducted = qWorth - qEarned;
  305. var teacherFeedBack = JsonStr.dbTests[key][key2]['questions'][key3]['teacherfeedback'];
  306.  
  307. //Add question for later reference
  308. questionstable.push(fName);
  309.  
  310. //Null Checks
  311. if(teacherFeedBack==null) { teacherFeedBack=""; }
  312. if(studentAnswer==null) { studentAnswer=""; }
  313.  
  314. //create table for question using data
  315. //FIRST - QUESTION, FUNCTION, STUDENT ANSWER, AND AUTO FEEDBACK
  316. var input = "<table>";
  317. input += "<tr width=100%> <td><label>Question: </label><br><textarea id=\""+fName+"qname"+"\" placeholder='No Answer' disabled rows='2' cols='100'>"+qName+"</textarea></td>";
  318. input += "<td><label>Function Name: </label><br><textarea placeholder='No Answer' disabled rows='2' cols='100'>"+fName+"</textarea></td> </tr>";
  319. input += "<tr width=100%> <td valign='top'><label>Student Answered: </label><br><textarea placeholder='No Answer' disabled rows='8' cols='50'>"+studentAnswer+"</textarea></td>";
  320. input += "<td valign='top'><label>Auto Grader Feedback: </label><br>"; //end td tag after loop
  321.  
  322. // AUTOGRADER FEEDBACK WORKAROUND!!!
  323. // -check if testcase is null
  324. // -if it is dont include it
  325. // -check deduct that autograder set
  326. // -if 0 then Passed!
  327. // -if more then 0 Fail!
  328. // -----------------------------------------------
  329.  
  330. //get values for all testcases
  331. var case1 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case1'];
  332. var case2 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case2'];
  333. var case3 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case3'];
  334. var case4 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case4'];
  335. var case5 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case5'];
  336. var case6 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case6'];
  337. var rcase1 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase1'];
  338. var rcase2 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase2'];
  339. var rcase3 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase3'];
  340. var rcase4 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase4'];
  341. var rcase5 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase5'];
  342. var rcase6 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase6'];
  343. var constraint = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['constraint'];
  344.  
  345. //Start Checking if testcase exsist and display it with correct data
  346. input += "<table class='clean'>";
  347. if(dfname>0){
  348. input += "<tr><td width=70%>";
  349. input += "<label class='redGrade'>";
  350. input += "Function Name Does Not Match: Expecting " + fName + "</label></td>";
  351. input += "<td>Deducted Points: <input type='number' id=\""+fName+"df"+"\" value='"+dfname+"' min='0'><br></td></tr>";
  352. }
  353. else{
  354. input += "<tr><td width=70%><label class='greenGrade'>";
  355. input += "Function Name Matches </label><br></td>";
  356. input += "<td>Deducted Points:<input type='number' id=\""+fName+"df"+"\" value='0' min='0'><br></td></tr>";
  357. }
  358. if(constraint!=''){
  359. if(dconstraint>0){
  360. input += "<tr><td><label class='redGrade'>";
  361. input += constraint + " Constraint was not used.</label></td>";
  362. input += "<td>Deducted Points:<input type='number' id=\""+fName+"dc"+"\" value='"+dconstraint+"' min='0'><br></td></tr>";
  363. }
  364. else{
  365. input += "<tr><td><label class='greenGrade'>";
  366. input += constraint + " Contraint was used. </label><br></td>";
  367. input += "<td>Deducted Points:<input type='number' id=\""+fName+"dc"+"\" value='0' min='0'><br></td></tr>";
  368. }
  369. }
  370.  
  371. //Added colon
  372. //-----------------------------------------------------------------
  373. if(typeof dcolon !== 'undefined'){
  374. if(dcolon>0){
  375. input += "<tr><td><label class='redGrade'>";
  376. input += "Colon was not used.</label></td>";
  377. input += "<td>Deducted Points:<input type='number' id=\""+fName+"dcol"+"\" value='"+dcolon+"' min='0'><br></td></tr>";
  378. }
  379. else{
  380. input += "<tr><td><label class='greenGrade'>";
  381. input += "Colon was used. </label><br></td>";
  382. input += "<td>Deducted Points:<input type='number' id=\""+fName+"dcol"+"\" value='0' min='0'><br></td></tr>";
  383. }
  384. }
  385. //end
  386. //-------------------------------------------------------------------
  387.  
  388. if(case1!=''){
  389. if(dcase1>0){
  390. input += "<tr><td><label class='redGrade'>";
  391. input += case1 + " Failed: Expecting " + rcase1 + " Got " + srcase1 + "</label></td>";
  392. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d1"+"\" value='"+dcase1+"' min='0'><br></td></tr>";
  393. }
  394. else{
  395. input += "<tr><td><label class='greenGrade'>";
  396. input += case1 + " Passed: Expecting " + rcase1 + " Got " + srcase1 + "</label><br></td>";
  397. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d1"+"\" value='0' min='0'><br></td></tr>";
  398. }
  399. }
  400. if(case2!=''){
  401. if(dcase2>0){
  402. input += "<tr><td><label class='redGrade'>";
  403. input += case2 + " Failed: Expecting " + rcase2 + " Got " + srcase2 + "</label></td>";
  404. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d2"+"\" value='"+dcase2+"' min='0'><br></td></tr>";
  405. }
  406. else{
  407. input += "<tr><td><label class='greenGrade'>";
  408. input += case2 + " Passed: Expecting " + rcase2 + " Got " + srcase2 + "</label><br></td>";
  409. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d2"+"\" value='0' min='0'><br></td></tr>";
  410. }
  411. }
  412. if(case3!=''){
  413. if(dcase3>0){
  414. input += "<tr><td><label class='redGrade'>";
  415. input += case3 + " Failed: Expecting " + rcase3 + " Got " + srcase3 + "</label></td>";
  416. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d3"+"\" value='"+dcase3+"' min='0'><br></td></tr>";
  417. }
  418. else{
  419. input += "<tr><td><label class='greenGrade'>";
  420. input += case3 + " Passed: Expecting " + rcase3 + " Got " + srcase3 + "</label><br></td>";
  421. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d3"+"\" value='0' min='0'><br></td></tr>";
  422. }
  423. }
  424. if(case4!=''){
  425. if(dcase4>0){
  426. input += "<tr><td><label class='redGrade'>";
  427. input += case4 + " Failed: Expecting " + rcase4 + " Got " + srcase4 + "</label></td>";
  428. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d4"+"\" value='"+dcase4+"' min='0'><br></td></tr>";
  429. }
  430. else{
  431. input += "<tr><td><label class='greenGrade'>";
  432. input += case4 + " Passed: Expecting " + rcase4 + " Got " + srcase4 + "</label><br></td>";
  433. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d4"+"\" value='0' min='0'><br></td></tr>";
  434. }
  435. }
  436. if(case5!=''){
  437. if(dcase5>0){
  438. input += "<tr><td><label class='redGrade'>";
  439. input += case5 + " Failed: Expecting " + rcase5 + " Got " + srcase5 + " </label></td>";
  440. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d5"+"\" value='"+dcase5+"' min='0'><br></td></tr>";
  441. }
  442. else{
  443. input += "<tr><td><label class='greenGrade'>";
  444. input += case5 + " Passed: Expecting " + rcase5 + " Got " + srcase5 + "</label><br></td>";
  445. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d5"+"\" value='0' min='0'><br></td></tr>";
  446. }
  447. }
  448. if(case6!=''){
  449. if(dcase6>0){
  450. input += "<tr><td><label class='redGrade'>";
  451. input += case6 + " Failed: Expecting " + rcase6 + " Got " + srcase6 + "</label></td>";
  452. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d6"+"\" value='"+dcase6+"' min='0'><br></td></tr>";
  453. }
  454. else{
  455. input += "<tr><td><label class='greenGrade'>";
  456. input += case6 + " Passed: Expecting " + rcase6 + " Got " + srcase6 + "</label><br></td>";
  457. input += "<td>Deducted Points:<input type='number' id=\""+fName+"d6"+"\" value='0' min='0'><br></td></tr>";
  458. }
  459. }
  460. input += "</table>";
  461. input += "</td> </tr> ";
  462. //SECOND - QUESTION WORTHS AND TEACHER FEEDBACK BOX
  463. input += "<tr width=100%> <td width=50%>";
  464. input += "<label>Worth: </label><input disabled type='number' id=\""+fName+"worth"+"\" value='"+qWorth+"'>";
  465. input += "<label>Earned Points: </label><input disabled type='number' value='"+qEarned+"'>";
  466. input += "</td><td width=50%><textarea placeholder='Teacher Feedback' id=\""+fName+"teacherFB"+"\" rows='2' cols='50'>"+teacherFeedBack+"</textarea> </td></tr>";
  467.  
  468. input += "</table>";
  469. //Add to Screen
  470. currentHTML.innerHTML = currentHTML.innerHTML + input;
  471. }
  472. }
  473. }
  474. }
  475. };
  476. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  477. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  478. xhttp.send(query);
  479. }
  480.  
  481.  
  482. function sendupdate(){
  483. //structure data to be send!!!
  484. //Retrieve SessionID - function from Auth.js
  485. var sessionID = getCookie("session");
  486. var test = getCookie("testName");
  487. var name = getCookie("studentName");
  488.  
  489. var qCount = questionstable.length;
  490. var query = 'qCount=' + qCount + '&sessionID=' + sessionID;
  491. query += '&testname=' + test + '&username=' + name;
  492. query += '&curlid=' + "updatefeedback";
  493. var loopcount = 0;
  494. while(questionstable.length){
  495. var fName = questionstable.pop();
  496. var qName = document.getElementById(fName+"qname").value;
  497. var qWorth = document.getElementById(fName+"worth").value;
  498. var df=0;
  499. var dc=0;
  500. //Added
  501. var dcol=0;
  502. var d1=0;
  503. var d2=0;
  504. var d3=0;
  505. var d4=0;
  506. var d5=0;
  507. var d6=0;
  508. var tdf = document.getElementById(fName+"df");
  509. var tdc = document.getElementById(fName+"dc");
  510. var td1 = document.getElementById(fName+"d1");
  511. var td2 = document.getElementById(fName+"d2");
  512. var td3 = document.getElementById(fName+"d3");
  513. var td4 = document.getElementById(fName+"d4");
  514. var td5 = document.getElementById(fName+"d5");
  515. var td6 = document.getElementById(fName+"d6");
  516. //Added
  517. var tdcol = document.getElementById(fName+"dcol");
  518. var earned = parseInt(qWorth, 10);
  519. console.error(earned);
  520. if(tdf){ df = tdf.value; earned = earned - parseInt(df,10); }
  521. if(tdc){ dc = tdc.value; earned = earned - parseInt(dc,10);}
  522. if(td1){ d1 = td1.value; earned = earned - parseInt(d1,10);}
  523. if(td2){ d2 = td2.value; earned = earned - parseInt(d2,10);}
  524. if(td3){ d3 = td3.value; earned = earned - parseInt(d3,10);}
  525. if(td4){ d4 = td4.value; earned = earned - parseInt(d4,10);}
  526. if(td5){ d5 = td5.value; earned = earned - parseInt(d5,10);}
  527. if(td6){ d6 = td6.value; earned = earned - parseInt(d6,10);}
  528. //Added
  529. if(tdcol){ dcol = tdcol.value; earned = earned - parseInt(dcol,10);}
  530. var teacherFB = document.getElementById(fName+"teacherFB").value;
  531. query += '&q'+loopcount+'='+(encodeURIComponent(qName).replace('+', '%2B')).replace('\'', '\'\'');
  532. query += '&e'+loopcount+'='+earned;
  533. query += '&t'+loopcount+'='+teacherFB;
  534. query += '&df'+loopcount+'='+df;
  535. query += '&dc'+loopcount+'='+dc;
  536. query += '&d1'+loopcount+'='+d1;
  537. query += '&d2'+loopcount+'='+d2;
  538. query += '&d3'+loopcount+'='+d3;
  539. query += '&d4'+loopcount+'='+d4;
  540. query += '&d5'+loopcount+'='+d5;
  541. query += '&d6'+loopcount+'='+d6;
  542. //Added
  543. query += '&dcol'+loopcount+'='+dcol;
  544.  
  545. loopcount++;
  546. }
  547. modTest(test, 3, name); //Need another way to mod the test! release for all students!
  548. //send data
  549. var xhttp = new XMLHttpRequest();
  550. xhttp.onreadystatechange = function(){
  551. if(this.readyState == 4 && this.status == 200){
  552. //Catching Invalid Responses
  553. try{
  554. var JsonStr = JSON.parse(this.responseText);
  555. if(JsonStr.debugmessage!=""){
  556. console.log("%c"+JsonStr.debugmessage,"color:orange");
  557. }
  558. console.log(JsonStr);
  559.  
  560. if(JsonStr.teacherFB=="1"){
  561. location.href = 'https://web.njit.edu/~jrp68/CS490/teacherHomepage.html';
  562. }
  563. else{
  564. document.getElementById("Alert").innerHTML = "Error Submiting Feedback"
  565. }
  566. }
  567. catch(err){
  568. console.warn("Curl Returned a Message: \n"+this.responseText);
  569. }
  570.  
  571. //location.href = 'https://web.njit.edu/~jrp68/CS490/teacherHomepage.html';
  572. }
  573. };
  574. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  575. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  576. xhttp.send(query);
  577. }
  578.  
  579. //StudentViewGrade.js
  580.  
  581. //Setting up Page Title
  582. var test = getCookie("testName");
  583. var name = getCookie("studentName");
  584. var questionstable = [];
  585.  
  586. document.getElementById('testTitle').innerHTML = test;
  587. loadTestQuestions(test);
  588.  
  589. function loadTestQuestions(test){
  590. //gettests
  591. //parse data and only use the data for user/test
  592.  
  593. //create tables for each questions
  594. var xhttp = new XMLHttpRequest();
  595. //Retrieve SessionID - function from Auth.js
  596. var sessionID = getCookie("session");
  597.  
  598. //Build Query
  599. var query = 'sessionID=' + sessionID + '&curlid=' + "gettest";
  600.  
  601. xhttp.onreadystatechange = function(){
  602. if(this.readyState == 4 && this.status == 200){
  603. //Catching Invalid Responses
  604. try{ var JsonStr = JSON.parse(this.responseText); }
  605. catch(err){ }
  606.  
  607. //Reset Current Test Search
  608. //document.getElementById("questionDisplay").innerHTML = "";
  609.  
  610. console.log(JsonStr);
  611. var currentHTML = document.getElementById("questionDisplay");
  612.  
  613. //TESTS
  614. for( var key in JsonStr.dbTests){
  615. if(key != test) { continue; } //If not this test dont include it
  616. //USERS
  617. for(var key2 in JsonStr.dbTests[key]){
  618. if(key2 != name) { continue; } //If not this user dont include it
  619. //QUESTIONS
  620. for( var key3 in JsonStr.dbTests[key][key2]['questions']){
  621. //Setup values
  622. var qName = key3;
  623. var fName = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['fname'];
  624. var studentAnswer = JsonStr.dbTests[key][key2]['questions'][key3]['studentanswer'];
  625. var autoFeedBack = JsonStr.dbTests[key][key2]['questions'][key3]['autofeedback'];
  626. var qWorth = JsonStr.dbTests[key][key2]['questions'][key3]['worth'];
  627. var qEarned = JsonStr.dbTests[key][key2]['questions'][key3]['earnedpoints'];
  628. var dfname = JsonStr.dbTests[key][key2]['questions'][key3]['dfname'];
  629. var dconstraint = JsonStr.dbTests[key][key2]['questions'][key3]['dconstraint'];
  630. var dcase1 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase1'];
  631. var dcase2 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase2'];
  632. var dcase3 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase3'];
  633. var dcase4 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase4'];
  634. var dcase5 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase5'];
  635. var dcase6 = JsonStr.dbTests[key][key2]['questions'][key3]['dcase6'];
  636. var dcolon = JsonStr.dbTests[key][key2]['questions'][key3]['dcolon'];
  637. var srcase1 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase1'];
  638. var srcase2 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase2'];
  639. var srcase3 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase3'];
  640. var srcase4 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase4'];
  641. var srcase5 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase5'];
  642. var srcase6 = JsonStr.dbTests[key][key2]['questions'][key3]['srcase6'];
  643.  
  644. var deducted = qWorth - qEarned;
  645. var teacherFeedBack = JsonStr.dbTests[key][key2]['questions'][key3]['teacherfeedback'];
  646.  
  647. //Add question for later reference
  648. questionstable.push(qName);
  649.  
  650. //Null Checks
  651. if(teacherFeedBack==null) { teacherFeedBack=""; }
  652. if(studentAnswer==null) { studentAnswer=""; }
  653.  
  654. //create table for question using data
  655. //FIRST - QUESTION, FUNCTION, STUDENT ANSWER, AND AUTO FEEDBACK
  656. var input = "<table>";
  657. input += "<tr width=100%> <td><label>Question: </label><br><textarea placeholder='No Answer' disabled rows='2' cols='100'>"+qName+"</textarea></td>";
  658. input += "<td><label>Function Name: </label><br><textarea placeholder='No Answer' disabled rows='2' cols='100'>"+fName+"</textarea></td> </tr>";
  659. input += "<tr width=100%> <td valign='top'><label>Student Answered: </label><br><textarea placeholder='No Answer' disabled rows='8' cols='50'>"+studentAnswer+"</textarea></td>";
  660. input += "<td valign='top'><label>Auto Grader Feedback: </label><br>"; //end td tag after loop
  661.  
  662. // AUTOGRADER FEEDBACK WORKAROUND!!!
  663. // -check if testcase is null
  664. // -if it is dont include it
  665. // -check deduct that autograder set
  666. // -if 0 then Passed!
  667. // -if more then 0 Fail!
  668. // -----------------------------------------------
  669.  
  670. //get values for all testcases
  671. var case1 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case1'];
  672. var case2 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case2'];
  673. var case3 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case3'];
  674. var case4 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case4'];
  675. var case5 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case5'];
  676. var case6 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['case6'];
  677. var rcase1 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase1'];
  678. var rcase2 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase2'];
  679. var rcase3 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase3'];
  680. var rcase4 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase4'];
  681. var rcase5 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase5'];
  682. var rcase6 = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['rcase6'];
  683. var constraint = JsonStr.dbTests[key][key2]['questions'][key3]['qdata']['constraint'];
  684.  
  685. //Start Checking if testcase exsist and display it with correct data
  686. input += "<table class='clean'>";
  687. if(dfname>0){
  688. input += "<tr><td width=70%>";
  689. input += "<label class='redGrade'>";
  690. input += "Function Name Does Not Match: Expecting " + fName + " </label></td>";
  691. input += "<td>Deducted Points: <input type='number' id=\""+qName+"df"+"\" value='"+dfname+"' min='0' disabled><br></td></tr>";
  692. }
  693. else{
  694. input += "<tr><td width=70%><label class='greenGrade'>";
  695. input += "Function Name Matches </label><br></td>";
  696. input += "<td>Deducted Points: <input type='number' id=\""+qName+"df"+"\" value='0' min='0' disabled><br></td></tr>";
  697. }
  698. if(constraint!=''){
  699. if(dconstraint>0){
  700. input += "<tr><td><label class='redGrade'>";
  701. input += constraint + " Constraint was not used.</label></td>";
  702. input += "<td>Deducted Points: <input type='number' id=\""+qName+"dc"+"\" value='"+dconstraint+"' min='0' disabled><br></td></tr>";
  703. }
  704. else{
  705. input += "<tr><td><label class='greenGrade'>";
  706. input += constraint + " Contraint was used. </label><br></td>";
  707. input += "<td>Deducted Points: <input type='number' id=\""+qName+"dc"+"\" value='0' min='0' disabled><br></td></tr>";
  708. }
  709. }
  710. //Added colon
  711. //-----------------------------------------------------------------
  712. if(typeof dcolon !== 'undefined'){
  713. if(dcolon>0){
  714. input += "<tr><td><label class='redGrade'>";
  715. input += "Colon was not used.</label></td>";
  716. input += "<td>Deducted Points:<input type='number' id=\""+fName+"dcol"+"\" value='"+dcolon+"' min='0'><br></td></tr>";
  717. }
  718. else{
  719. input += "<tr><td><label class='greenGrade'>";
  720. input += "Colon was used. </label><br></td>";
  721. input += "<td>Deducted Points:<input type='number' id=\""+fName+"dcol"+"\" value='0' min='0'><br></td></tr>";
  722. }
  723. }
  724. //end
  725. //-------------------------------------------------------------------
  726. if(case1!=''){
  727. if(dcase1>0){
  728. input += "<tr><td><label class='redGrade'>";
  729. input += case1 + " Failed: Expecting " + rcase1 + " Got " + srcase1 + "</label></td>";
  730. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d1"+"\" value='"+dcase1+"' min='0' disabled><br></td></tr>";
  731. }
  732. else{
  733. input += "<tr><td><label class='greenGrade'>";
  734. input += case1 + " Passed: Expecting " + rcase1 + " Got " + srcase1 + "</label><br></td>";
  735. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d1"+"\" value='0' min='0' disabled><br></td></tr>";
  736. }
  737. }
  738. if(case2!=''){
  739. if(dcase2>0){
  740. input += "<tr><td><label class='redGrade'>";
  741. input += case2 + " Failed: Expecting " + rcase2 + " Got " + srcase2 + "</label></td>";
  742. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d2"+"\" value='"+dcase2+"' min='0' disabled><br></td></tr>";
  743. }
  744. else{
  745. input += "<tr><td><label class='greenGrade'>";
  746. input += case2 + " Passed: Expecting " + rcase2 + " Got " + srcase2 + "</label><br></td>";
  747. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d2"+"\" value='0' min='0' disabled><br></td></tr>";
  748. }
  749. }
  750. if(case3!=''){
  751. if(dcase3>0){
  752. input += "<tr><td><label class='redGrade'>";
  753. input += case3 + " Failed: Expecting " + rcase3 + " Got " + srcase3 + "</label></td>";
  754. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d3"+"\" value='"+dcase3+"' min='0' disabled><br></td></tr>";
  755. }
  756. else{
  757. input += "<tr><td><label class='greenGrade'>";
  758. input += case3 + " Passed: Expecting " + rcase3 + " Got " + srcase3 + "</label><br></td>";
  759. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d3"+"\" value='0' min='0' disabled><br></td></tr>";
  760. }
  761. }
  762. if(case4!=''){
  763. if(dcase4>0){
  764. input += "<tr><td><label class='redGrade'>";
  765. input += case4 + " Failed: Expecting " + rcase4 + " Got " + srcase4 + "</label></td>";
  766. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d4"+"\" value='"+dcase4+"' min='0' disabled><br></td></tr>";
  767. }
  768. else{
  769. input += "<tr><td><label class='greenGrade'>";
  770. input += case4 + " Passed: Expecting " + rcase4 + " Got " + srcase4 + "</label><br></td>";
  771. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d4"+"\" value='0' min='0' disabled><br></td></tr>";
  772. }
  773. }
  774. if(case5!=''){
  775. if(dcase5>0){
  776. input += "<tr><td><label class='redGrade'>";
  777. input += case5 + " Failed: Expecting " + rcase5 + " Got " + srcase5 + "</label></td>";
  778. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d5"+"\" value='"+dcase5+"' min='0' disabled><br></td></tr>";
  779. }
  780. else{
  781. input += "<tr><td><label class='greenGrade'>";
  782. input += case5 + " Passed: Expecting " + rcase5 + " Got " + srcase5 + "</label><br></td>";
  783. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d5"+"\" value='0' min='0' disabled><br></td></tr>";
  784. }
  785. }
  786. if(case6!=''){
  787. if(dcase6>0){
  788. input += "<tr><td><label class='redGrade'>";
  789. input += case6 + " Failed: Expecting " + rcase6 + " Got " + srcase6 + "</label></td>";
  790. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d6"+"\" value='"+dcase6+"' min='0' disabled><br></td></tr>";
  791. }
  792. else{
  793. input += "<tr><td><label class='greenGrade'>";
  794. input += case6 + " Passed: Expecting " + rcase6 + " Got " + srcase6 + "</label><br></td>";
  795. input += "<td>Deducted Points: <input type='number' id=\""+qName+"d6"+"\" value='0' min='0' disabled><br></td></tr>";
  796. }
  797. }
  798. input += "</table>";
  799. input += "</td> </tr> ";
  800. //SECOND - QUESTION WORTHS AND TEACHER FEEDBACK BOX
  801. input += "<tr width=100%> <td width=50%>";
  802. input += "<label>Worth: </label><input disabled type='number' id=\""+qName+"worth"+"\" value='"+qWorth+"'>";
  803. input += "<label> Earned Points: </label><input disabled type='number' value='"+qEarned+"'>";
  804. input += "</td><td width=50%>Teacher Feedback: <br><textarea placeholder='Teacher Feedback' id=\""+qName+"teacherFB"+"\" rows='2' cols='50' disabled>"+teacherFeedBack+"</textarea> </td></tr>";
  805.  
  806. input += "</table>";
  807. //Add to Screen
  808. currentHTML.innerHTML = currentHTML.innerHTML + input;
  809. }
  810. }
  811. }
  812. }
  813. };
  814. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  815. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  816. xhttp.send(query);
  817. }
  818. function returnhome(){
  819. location.href = 'https://web.njit.edu/~jrp68/CS490/studentHomepage.html';
  820. }
  821.  
  822. //takeTest.js
  823.  
  824. //Setting up Page Title
  825. var test = getCookie("testName");
  826. var name = getCookie("userName");
  827.  
  828. document.getElementById('testTitle').innerHTML = test;
  829.  
  830. function loadTest(){
  831.  
  832. var xhttp = new XMLHttpRequest();
  833. //Retrieve SessionID - function from Auth.js
  834. var sessionID = getCookie("session");
  835.  
  836. //Build Query
  837. var query = 'sessionID=' + sessionID + '&curlid=' + "gettest";
  838.  
  839. xhttp.onreadystatechange = function(){
  840. if(this.readyState == 4 && this.status == 200){
  841. //Catching Invalid Responses
  842. try{ var JsonStr = JSON.parse(this.responseText); }
  843. catch(err){ console.log("Error"); }
  844.  
  845. //Reset Current Test Search
  846. document.getElementById("questionTable").innerHTML = "<tr><th width=30%> Question </th><th width=70%> Answer</th><th width=70%>Question Value </th></tr>";
  847.  
  848. console.log(JsonStr);
  849. //Loop Through Parse and show all tests returned
  850. var currentHTML = document.getElementById("questionTable");
  851. var loopcount = 1
  852. for( var key in JsonStr.dbTests[test][name]['questions']){
  853. var question = key;
  854. var answer = JsonStr.dbTests[test][name]['questions'][key]['studentanswer'];
  855. var worth = JsonStr.dbTests[test][name]['questions'][key]['worth'];
  856. var input = "<tr class='aligncenter'>";
  857. input += "<td>" + question + "</td>";
  858. if(answer==null){
  859. input += "<td> <textarea placeholder='Your Answer' id='answer"+loopcount+"' rows='8' cols='50'></textarea> </td>";
  860. }
  861. else{
  862. input += "<td> <textarea rows='8' cols='50' id='answer"+loopcount+"' spellcheck='false' >"+answer+"</textarea> </td>";
  863. }
  864. input += "<td>"+worth+" Points</td>";
  865. input += "</tr>";
  866. currentHTML.innerHTML = currentHTML.innerHTML + input;
  867. loopcount++;
  868. }
  869. }
  870. };
  871. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  872. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  873. xhttp.send(query);
  874.  
  875. }
  876.  
  877. function submitTest(){
  878. var numRows = document.getElementById("questionTable").rows.length - 1;
  879. var table = document.getElementById("questionTable");
  880. var rowStart = 1;
  881. var query = "";
  882. while( rowStart <= numRows ){
  883. if(rowStart == 1){
  884. query += "question" + rowStart + "=" + encodeURIComponent(table.rows[rowStart].cells[0].innerHTML).replace('+', '%2B');
  885. }
  886. else{
  887. query += "&question" + rowStart + "=" + encodeURIComponent(table.rows[rowStart].cells[0].innerHTML).replace('+', '%2B');
  888. }
  889. var Qid = encodeURIComponent(document.getElementById("answer"+rowStart).value).replace('+', '%2B');
  890. query += "&answer" + rowStart + "=" + Qid;
  891. rowStart += 1;
  892. }
  893. query += "&qCount=" + numRows;
  894. query += "&testname=" + test;
  895. query += "&username=" + name;
  896. query += "&curlid=" + "updatetest";
  897.  
  898. var xhttp = new XMLHttpRequest();
  899. //Retrieve SessionID - function from Auth.js
  900.  
  901. xhttp.onreadystatechange = function(){
  902. if(this.readyState == 4 && this.status == 200){
  903. //Catching Invalid Responses
  904. try{
  905. var JsonStr = JSON.parse(this.responseText);
  906. if(JsonStr.debugmessage!=""){
  907. console.log("%c"+JsonStr.debugmessage,"color:orange");
  908. }
  909. console.log(JsonStr);
  910. }
  911. catch(err){
  912. console.warn("Curl Returned a Message: \n"+this.responseText);
  913. }
  914. //document.getElementById("answer2").innerHTML = JsonStr.answers[0];
  915. location.href = 'https://web.njit.edu/~jrp68/CS490/studentHomepage.html';
  916. }
  917. };
  918. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  919. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  920. xhttp.send(query);
  921. }
  922.  
  923. //teacher.js
  924. checkAuth("2");
  925. function home(){
  926. document.getElementById("webcontainer-Home").style.display = "inline";
  927. document.getElementById("webcontainer-Assignments").style.display = "none";
  928. document.getElementById("webcontainer-Grades").style.display = "none";
  929. }
  930. function assignments(){
  931. document.getElementById("webcontainer-Home").style.display = "none";
  932. document.getElementById("webcontainer-Assignments").style.display = "inline";
  933. document.getElementById("webcontainer-Grades").style.display = "none";
  934. }
  935. function grades(){
  936. document.getElementById("webcontainer-Home").style.display = "none";
  937. document.getElementById("webcontainer-Assignments").style.display = "none";
  938. document.getElementById("webcontainer-Grades").style.display = "inline";
  939. }
  940. function questionScreen(){
  941. getQuestions();
  942. document.getElementById("questionCreation").style.display = "inline";
  943. document.getElementById("testCreation").style.display = "none";
  944. document.getElementById("directions").innerHTML = '<h1 style="text-align: center;"> Create Question Below or GoBack</h1><input type="button" onclick="testScreen()" value="Go Back">';
  945. }
  946. function testScreen(){
  947. getQuestions();
  948. document.getElementById("questionCreation").style.display = "none";
  949. document.getElementById("testCreation").style.display = "inline";
  950. document.getElementById("directions").innerHTML = '<h1 style="text-align: center;">Add Questions From Question Bank or Create a Question</h1><input type="button" onclick="questionScreen()" value="Create a Question">';
  951. }
  952. function gotoCreateTest(){
  953. location.href = 'https://web.njit.edu/~jrp68/CS490/testCreation.html';
  954. }
  955. function testg(){
  956. location.href = 'https://web.njit.edu/~jrp68/CS490/testg.html';
  957. }
  958. function resetQuestionFields(){
  959. setTimeout(addQResponseReset, 20000)
  960. document.getElementById("question").value = "";
  961. document.getElementById("functionName").value = "";
  962. document.getElementById("difficulty").value = "";
  963. document.getElementById("topic").value = "";
  964. document.getElementById("constraint").value = "";
  965. document.getElementById("case1").value = "";
  966. document.getElementById("rcase1").value = "";
  967. document.getElementById("case2").value = "";
  968. document.getElementById("rcase2").value = "";
  969. document.getElementById("case3").value = "";
  970. document.getElementById("rcase3").value = "";
  971. document.getElementById("case4").value = "";
  972. document.getElementById("rcase4").value = "";
  973. document.getElementById("case5").value = "";
  974. document.getElementById("rcase5").value = "";
  975. document.getElementById("case6").value = "";
  976. document.getElementById("rcase6").value = "";
  977. }
  978. function removeTestQuestions(){
  979. document.getElementById("testCreationTable").innerHTML = "";
  980. }
  981. function addQResponseReset(){
  982. document.getElementById("addAnswer").innerHTML = "";
  983. }
  984. function addQuestion(row){
  985. var tableRef = document.getElementById("questionTable");
  986. var questionToAdd = tableRef.rows[row].cells[0].innerHTML;
  987. var testQuestionTable = document.getElementById("testCreationTable");
  988.  
  989. var row = testQuestionTable.insertRow();
  990. var cell1 = row.insertCell(0);
  991. var cell2 = row.insertCell(1);
  992. var cell3 = row.insertCell(2);
  993. cell3.style.textAlign = "right";
  994. cell1.innerHTML = questionToAdd;
  995. cell2.innerHTML = "<input type='button' value='X' onclick='removeQuestion(this)'>";
  996. cell3.innerHTML = "<input type='number' value='20' onchange='calcTotalPoints()'>";
  997.  
  998. calcTotalPoints();
  999. }
  1000. function calcTotalPoints(){
  1001. var rowEnd = document.getElementById("testCreationTable").rows.length;
  1002. var table = document.getElementById("testCreationTable");
  1003. var totalpoints = document.getElementById("totalpoints");
  1004. var currentpoints = 0;
  1005. var rowStart = 0;
  1006. while( rowStart < rowEnd ){
  1007. var qWorth = table.rows[rowStart].cells[2].childNodes[0].value;
  1008. currentpoints += parseInt(qWorth, 10);
  1009. rowStart += 1;
  1010. }
  1011. totalpoints.value = parseInt(currentpoints, 10);
  1012. }
  1013. function removeQuestion(index){
  1014. var row = index.parentNode.parentNode;
  1015. document.getElementById("testCreationTable").deleteRow(row.rowIndex);
  1016. calcTotalPoints();
  1017. }
  1018. //Send test data to db for save.
  1019. function createTest(){
  1020. var xhttp = new XMLHttpRequest();
  1021. var rowEnd = document.getElementById("testCreationTable").rows.length;
  1022. var table = document.getElementById("testCreationTable");
  1023. var testName = document.getElementById("testName").value;
  1024. if(testName=='' || testName==null){
  1025. document.getElementById("addTest123").innerHTML = "ADD Failed Enter a Valid TestName";
  1026. return;
  1027. }
  1028. var rowStart = 0;
  1029. var query = "";
  1030. while( rowStart < rowEnd ){
  1031. if(rowStart == 0){
  1032. query += "question" + rowStart + "=" + encodeURIComponent(table.rows[rowStart].cells[0].innerHTML);
  1033. }
  1034. else{
  1035. query += "&question" + rowStart + "=" + encodeURIComponent(table.rows[rowStart].cells[0].innerHTML);
  1036. }
  1037. query += "&worth" + rowStart + "=" + table.rows[rowStart].cells[2].childNodes[0].value;
  1038. rowStart += 1;
  1039. }
  1040. query += "&qCount=" + rowEnd;
  1041. query += "&testname=" + testName;
  1042. query += "&curlid=" + "createtest";
  1043.  
  1044. //Retrieve SessionID - function from Auth.js
  1045. var sessionID = getCookie("session");
  1046. query += "&sessionID=" + sessionID;
  1047.  
  1048. xhttp.onreadystatechange = function(){
  1049. if(this.readyState == 4 && this.status == 200){
  1050. //Catching Invalid Responses
  1051. try{
  1052. var JsonStr = JSON.parse(this.responseText);
  1053. if(JsonStr.debugmessage!=""){
  1054. console.log("%c"+JsonStr.debugmessage,"color:orange");
  1055. }
  1056. console.log(JsonStr);
  1057.  
  1058. if( JsonStr.dbresponse == "0" ){
  1059. //Invalid Login - redirect to login
  1060. location.href = 'https://web.njit.edu/~jrp68/CS490/errorLogout.php';
  1061. }
  1062. if( JsonStr.dbresponse == "1" ){
  1063. //Student Login - NO ACCESS ALLOWED - redirect to login
  1064. location.href = 'https://web.njit.edu/~jrp68/CS490/errorLogout.php';
  1065. }
  1066. if( JsonStr.dbtestAdd == "1"){
  1067. document.getElementById("addTest123").innerHTML = "Add Successful!";
  1068. document.getElementById("testCreationTable").innerHTML = "";
  1069. }
  1070. else{ document.getElementById("addTest123").innerHTML = "Add Failed! : forgot name?"; }
  1071. }
  1072. catch(err){
  1073. console.warn("Curl Returned a Message: \n"+this.responseText);
  1074. }
  1075.  
  1076. }
  1077. };
  1078. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  1079. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  1080. xhttp.send(query);
  1081. }
  1082. function createQuestion(){
  1083. //Getting Values for Post
  1084. var xhttp = new XMLHttpRequest();
  1085. var temp = document.getElementById("question").value.replace('+', '%2B');
  1086. var question = encodeURIComponent(temp.replace('\'', '\'\''));
  1087. var func = encodeURIComponent(document.getElementById("functionName").value.replace('\'', '\'\''));
  1088. var diff = encodeURIComponent(document.getElementById("difficulty").value.replace('\'', '\'\''));
  1089. var topic = encodeURIComponent(document.getElementById("topic").value.replace('\'', '\'\''));
  1090. var constraint = encodeURIComponent(document.getElementById("constraint").value.replace('\'', '\'\''));
  1091. var case1 = encodeURIComponent(document.getElementById("case1").value.replace('\'', '\'\''));
  1092. var rcase1 = encodeURIComponent(document.getElementById("rcase1").value.replace('\'', '\'\''));
  1093. var case2 = encodeURIComponent(document.getElementById("case2").value.replace('\'', '\'\''));
  1094. var rcase2 = encodeURIComponent(document.getElementById("rcase2").value.replace('\'', '\'\''));
  1095. var case3 = encodeURIComponent(document.getElementById("case3").value.replace('\'', '\'\''));
  1096. var rcase3 = encodeURIComponent(document.getElementById("rcase3").value.replace('\'', '\'\''));
  1097. var case4 = encodeURIComponent(document.getElementById("case4").value.replace('\'', '\'\''));
  1098. var rcase4 = encodeURIComponent(document.getElementById("rcase4").value.replace('\'', '\'\''));
  1099. var case5 = encodeURIComponent(document.getElementById("case5").value.replace('\'', '\'\''));
  1100. var rcase5 = encodeURIComponent(document.getElementById("rcase5").value.replace('\'', '\'\''));
  1101. var case6 = encodeURIComponent(document.getElementById("case6").value.replace('\'', '\'\''));
  1102. var rcase6 = encodeURIComponent(document.getElementById("rcase6").value.replace('\'', '\'\''));
  1103.  
  1104. //Retrieve SessionID - function from Auth.js
  1105. var sessionID = getCookie("session");
  1106. var isQuestion = "1";
  1107.  
  1108. //Broken in parts for readability
  1109. var part1 = 'question=' + question + '&functionName=' + func + '&difficulty=' + diff + '&topic=' + topic;
  1110. var part2 = 'constraint=' + constraint + '&case1=' + case1 + '&rcase1=' + rcase1 + '&case2=' + case2;
  1111. var part3 = 'rcase2=' + rcase2 + '&case3=' + case3 + '&rcase3=' + rcase3 + '&sessionID=' + sessionID + '&isQuestion=' + isQuestion;
  1112. var part4 = 'case4=' + case4 + '&rcase4=' + rcase4 + '&case5=' + case5 + '&rcase5=' + rcase5 + '&case6=' + case6 + '&rcase6=' + rcase6;
  1113. var query = part1 + '&' + part2 + '&' + part3 + '&' + part4;
  1114. query += '&curlid=' + "createquestion";
  1115. console.log("Question query being sent: "+query);
  1116. xhttp.onreadystatechange = function(){
  1117. if(this.readyState == 4 && this.status == 200){
  1118. //Catching Invalid Responses
  1119. try{
  1120. var JsonStr = JSON.parse(this.responseText);
  1121. if(JsonStr.debugmessage!=""){
  1122. console.log("%c"+JsonStr.debugmessage,"color:orange");
  1123. }
  1124. console.log(JsonStr);
  1125.  
  1126. /*
  1127. if( JsonStr.dbresponse != "2" ){
  1128. //Invalid Login/Access - redirect to login
  1129. location.href = 'https://web.njit.edu/~jrp68/CS490/errorLogout.php';
  1130. }
  1131. */
  1132. if( JsonStr.dbquestionAdd == "1"){
  1133. document.getElementById("addAnswer").innerHTML = "Add Successful!";
  1134. resetQuestionFields();
  1135. }
  1136. else{ document.getElementById("addAnswer").innerHTML = "Add Failed!"; }
  1137. }
  1138. catch(err){
  1139. console.warn("Curl Returned a Message: \n"+this.responseText);
  1140. }
  1141.  
  1142. }
  1143. };
  1144.  
  1145. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  1146. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  1147. xhttp.send(query);
  1148. }
  1149. function getQuestions(){
  1150. //Getting Values for Post
  1151. var xhttp = new XMLHttpRequest();
  1152. var topic = document.getElementById("searchTopic").value;
  1153. var difficulty = document.getElementById("searchDifficulty").value;
  1154. var keyword = document.getElementById("searchKeyword").value;
  1155.  
  1156. //Retrieve SessionID - function from Auth.js
  1157. var sessionID = getCookie("session");
  1158.  
  1159. //Build Query
  1160. var query = 'topic=' + topic + '&difficulty=' + difficulty + '&keyword=' + keyword + '&sessionID=' + sessionID + '&curlid=' + "getquestion";
  1161. console.log("Question query being sent: "+query);
  1162. xhttp.onreadystatechange = function(){
  1163. if(this.readyState == 4 && this.status == 200){
  1164. //Catching Invalid Responses
  1165. try{
  1166. var JsonStr = JSON.parse(this.responseText);
  1167. if(JsonStr.debugmessage!=""){
  1168. console.log("%c"+JsonStr.debugmessage,"color:orange");
  1169. }
  1170. console.log(JsonStr);
  1171.  
  1172. document.getElementById("questionTable").innerHTML = "";
  1173. //Loop Through Parse and show all questions returned (10 max)
  1174. if(document.getElementById("testCreation").style.display == "none"){
  1175. for( var key in JsonStr.dbQuestions){
  1176. var currentHTML = document.getElementById("questionTable");
  1177. var input = "<tr><td style='padding: 25px;'>"+JsonStr.dbQuestions[key].qname;
  1178. //var input = "<tr><td style='padding: 25px;'>"+JsonStr.dbQuestions[key].question; //TEST
  1179. input += "</td><td style=\"text-align: right;\">";
  1180. //input += "<input type=\"button\" onclick=\"addQuestion(" + key + ")\" value=\"Add\" >";
  1181. input += "</td></tr>";
  1182. currentHTML.innerHTML = currentHTML.innerHTML + input;
  1183. }
  1184. }
  1185. else{
  1186. for( var key in JsonStr.dbQuestions){
  1187. var currentHTML = document.getElementById("questionTable");
  1188. var input = "<tr><td style='padding: 25px;'>"+JsonStr.dbQuestions[key].qname;
  1189. input += "</td><td style=\"text-align: right;\">";
  1190. input += "<input type=\"button\" onclick=\"addQuestion(" + key + ")\" value=\"Add\" >";
  1191. input += "</td></tr>";
  1192. currentHTML.innerHTML = currentHTML.innerHTML + input;
  1193. }
  1194. }
  1195. }
  1196. catch(err){
  1197. console.warn("Curl Returned a Message: \n"+this.responseText);
  1198. document.getElementById("getQuestionAlert").innerHTML = "Error: Couldn't Load Questions";
  1199. }
  1200.  
  1201. }
  1202. };
  1203. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  1204. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  1205. xhttp.send(query);
  1206. }
  1207. function getTests(){
  1208. var xhttp = new XMLHttpRequest();
  1209. //Retrieve SessionID - function from Auth.js
  1210. var sessionID = getCookie("session");
  1211.  
  1212. //Build Query
  1213. var query = 'sessionID=' + sessionID + '&curlid=' + "gettest";
  1214. //NEED USER and PASS
  1215.  
  1216. xhttp.onreadystatechange = function(){
  1217. if(this.readyState == 4 && this.status == 200){
  1218. //Catching Invalid Responses
  1219. try{
  1220. var JsonStr = JSON.parse(this.responseText);
  1221. if(JsonStr.debugmessage!=""){ console.log("%c"+JsonStr.debugmessage,"color:orange"); }
  1222. if(JsonStr.middebugmessage!=""){ console.log("%c"+JsonStr.middebugmessage,"color:orange"); }
  1223. console.log(JsonStr);
  1224.  
  1225. // SETTING UP TEST MENU
  1226. //---------------------------------------------------------------
  1227. //Reset Current Test Search
  1228. document.getElementById("assignmentTable").innerHTML = "<tr><th> Assignment </th><th></th><th></th></tr>";
  1229. //Loop Through Parse and show all tests returned
  1230. var currentHTML = document.getElementById("assignmentTable");
  1231. for( var key in JsonStr.dbTests){
  1232. var status;
  1233. //Only one loop need to get status
  1234. for( var key2 in JsonStr.dbTests[key]){
  1235. status = JsonStr.dbTests[key][key2]['status'];
  1236. break;
  1237. }
  1238. var name = key;
  1239. var input = "<tr><td style='width: 80%;'>" + name + "</td>";
  1240.  
  1241. if(status=='none'){
  1242. input += "<td class=\"enterInfo\"><input type='button' onclick='modTest(\""+name+"\", 0)' value='Delete Test' style='margin-right: 25px;'></td>";
  1243. input += "<td class=\"enterInfo\"><input type='button' onclick='modTest(\""+name+"\", 1)' value='Post Test'></td>";
  1244. }
  1245. if(status=='posted'){
  1246. input += "<td class=\"enterInfo\"><input type='button' onclick='modTest(\""+name+"\", 0)' value='Delete Test' style='margin-right: 25px;'></td>";
  1247. input += "<td class=\"enterInfo\"><input type='button' onclick='modTest(\""+name+"\", 2)' value='End Test'></td>";
  1248. }
  1249. if(status=='pregrade' || status=='graded'){
  1250. input += "<td class=\"enterInfo\"><input type='button' onclick='modTest(\""+name+"\", 0)' value='Delete Test' style='margin-right: 25px;'></td><td class=\"enterInfo\">Test is Closed & Graded</td>";
  1251. }
  1252. input += "</tr>";
  1253. currentHTML.innerHTML = currentHTML.innerHTML + input;
  1254. }
  1255. // SETTING UP TEST PREVIEW MENU
  1256. //------------------------------------------------------------------
  1257. //Reset Current Test Search
  1258. document.getElementById("gradeTable").innerHTML = "<tr><th> Assignment </th><th> Student </th><th> Grade </th><th> </th></tr>";
  1259.  
  1260. //Loop Through Parse and show all tests returned
  1261. var currentHTML = document.getElementById("gradeTable");
  1262. //Loops through every TEST
  1263. for( var key in JsonStr.dbTests){
  1264. //Loops through every STUDENT
  1265. for(var key2 in JsonStr.dbTests[key]){
  1266. var name = key;
  1267. var status = JsonStr.dbTests[key][key2]['status'];
  1268. var grade = parseInt(JsonStr.dbTests[key][key2]['grade'], 10);
  1269. var max = JsonStr.dbTests[key][key2]['maxscore'];
  1270. var student = key2;
  1271. var input = "<tr><td>" + name + "</td>";
  1272. input += "<td>" + student + "</td>";
  1273. input += "<td>" + grade + " / " + max + "</td>";
  1274. if(status=='none' || status=='posted'){
  1275. input += "<td class=\"enterInfo\"><input type='button' disabled value='Not Graded'></td>";
  1276. }
  1277. if(status=='pregrade'){
  1278. input += "<td class=\"enterInfo\"><input type='button' onclick=\"gotoPreviewGrade(this)\" value='Preview/Release Grade'></td>";
  1279. }
  1280. if(status=='graded'){
  1281. input += "<td class=\"enterInfo\"><input type='button' onclick=\"gotoPreviewGrade(this)\" value='Modify Grade'><input style=\"margin-left: 25px; background-color: green;\" type='button' value='Graded'></td>";
  1282. }
  1283. input += "</tr>";
  1284. currentHTML.innerHTML = currentHTML.innerHTML + input;
  1285. }
  1286. }
  1287. }
  1288. catch(err){
  1289. console.warn("Curl Returned a Message: \n"+this.responseText);
  1290. //console.log(this.responseText);
  1291. }
  1292.  
  1293. }
  1294. };
  1295. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  1296. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  1297. xhttp.send(query);
  1298. }
  1299. function modTest(name, modNum, user="none"){
  1300. //Mod# 0-Delete, 1-Post, 2-AutoGrade/Close Test;
  1301. var xhttp = new XMLHttpRequest();
  1302. //Retrieve SessionID - function from Auth.js
  1303. var sessionID = getCookie("session");
  1304. //Build Query
  1305. var query = 'sessionID=' + sessionID + '&testname=' + name + '&modnum=' + modNum + '&username=' + user;
  1306. query += '&curlid=' + "modtest";
  1307. xhttp.onreadystatechange = function(){
  1308. if(this.readyState == 4 && this.status == 200){
  1309. //Catching Invalid Responses
  1310. try{
  1311. var JsonStr = JSON.parse(this.responseText);
  1312. if(JsonStr.debugmessage!=""){
  1313. console.log("%c"+JsonStr.debugmessage,"color:orange");
  1314. }
  1315. console.log(JsonStr);
  1316.  
  1317. if(modNum==2){
  1318. //also make request to autograde
  1319. gradetest(name);
  1320. }
  1321. if(modNum==3){
  1322. //do nothing
  1323. }
  1324. else{
  1325. getTests();
  1326. }
  1327. }
  1328. catch(err){
  1329. console.warn("Curl Returned a Message: \n"+this.responseText);
  1330. }
  1331.  
  1332. }
  1333. };
  1334. //Send post
  1335. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  1336. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  1337. xhttp.send(query);
  1338.  
  1339.  
  1340. }
  1341. function gradetest(name){
  1342. var xhttp = new XMLHttpRequest();
  1343. //Retrieve SessionID - function from Auth.js
  1344. var sessionID = getCookie("session");
  1345. //Build Query
  1346. var query = 'sessionID=' + sessionID + '&testname=' + name + '&curlid=' + "gradetest";
  1347. xhttp.onreadystatechange = function(){
  1348. if(this.readyState == 4 && this.status == 200){
  1349. //Catching Invalid Responses
  1350. try{
  1351. var JsonStr = JSON.parse(this.responseText);
  1352. if(JsonStr.debugmessage!=""){
  1353. console.log("%c"+JsonStr.debugmessage,"color:orange");
  1354. }
  1355. console.log(JsonStr);
  1356. getTests();
  1357. }
  1358. catch(err){
  1359. console.warn("Curl Returned a Message: \n"+this.responseText);
  1360. modTest(name, 1);
  1361. }
  1362.  
  1363. }
  1364. };
  1365. //Send post
  1366. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  1367. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  1368. xhttp.send(query);
  1369.  
  1370. }
  1371. function gotoPreviewGrade(index){
  1372. var row = index.parentNode.parentNode;
  1373. var rowNum = row.rowIndex;
  1374. var test = document.getElementById("gradeTable").rows[rowNum].cells[0].innerHTML;
  1375. var student = document.getElementById("gradeTable").rows[rowNum].cells[1].innerHTML;
  1376. createCookie("testName", test, 2);
  1377. createCookie("studentName", student, 2);
  1378. location.href = 'https://web.njit.edu/~jrp68/CS490/previewGrade.html';
  1379. }
  1380. function teacherInit(){
  1381. getTests();
  1382. }
  1383.  
  1384. //student.js
  1385. checkAuth("1");
  1386. function home(){
  1387. document.getElementById("webcontainer-Home").style.display = "inline";
  1388. document.getElementById("webcontainer-Assignments").style.display = "none";
  1389. document.getElementById("webcontainer-Grades").style.display = "none";
  1390.  
  1391. }
  1392. function assignments(){
  1393. document.getElementById("webcontainer-Home").style.display = "none";
  1394. document.getElementById("webcontainer-Assignments").style.display = "inline";
  1395. document.getElementById("webcontainer-Grades").style.display = "none";
  1396. }
  1397. function grades(){
  1398. document.getElementById("webcontainer-Home").style.display = "none";
  1399. document.getElementById("webcontainer-Assignments").style.display = "none";
  1400. document.getElementById("webcontainer-Grades").style.display = "inline";
  1401. }
  1402. function studentInit(){
  1403. loadPage();
  1404. }
  1405. function loadPage(){
  1406. var xhttp = new XMLHttpRequest();
  1407. //Retrieve SessionID - function from Auth.js
  1408. var sessionID = getCookie("session");
  1409.  
  1410. //Build Query
  1411. var query = 'sessionID=' + sessionID + '&curlid=' + "gettest";
  1412. var studentname = getCookie("usernameTest");
  1413.  
  1414. xhttp.onreadystatechange = function(){
  1415. if(this.readyState == 4 && this.status == 200){
  1416. try{
  1417. var JsonStr = JSON.parse(this.responseText);
  1418. console.log(JsonStr);
  1419. // SETTING UP TEST MENU
  1420. //--------------------------------------------------------------
  1421. //Reset Current Test Search
  1422. document.getElementById("assignmentTable").innerHTML = "";
  1423. //Loop Through Parse and show all tests returned
  1424. var currentHTML = document.getElementById("assignmentTable");
  1425.  
  1426. //Loop through all the tests
  1427. for( var key in JsonStr.dbTests){
  1428. //User level
  1429. for( var key2 in JsonStr.dbTests[key]){
  1430. if(key2!=studentname){ continue; }
  1431. var status = JsonStr.dbTests[key][key2]['status'];
  1432. var user = key2;
  1433. var name = key;
  1434. var input = "<tr>";
  1435. if(status=='posted'){
  1436. input += "<td style='width: 80%;'>" + name + "</td>";
  1437. input += "<td class=\"enterInfo\"><input type='button' onclick='TakeTest(\""+name+"\",\""+user+"\")' value='Take Test'></td>";
  1438. }
  1439. if(status=='pregrade' || status=='graded'){
  1440. input += "<td style='width: 80%;'>" + name + "</td>";
  1441. input += "<td class=\"enterInfo\"><input type='button' disabled value='Test Closed'></td>";
  1442. }
  1443. input += "</tr>";
  1444. currentHTML.innerHTML = currentHTML.innerHTML + input;
  1445. break;
  1446. }
  1447. }
  1448.  
  1449. // SETTING UP PREVIEW MENU
  1450. //-------------------------------------------------------
  1451. //Reset Current Test Search
  1452. document.getElementById("gradeTable").innerHTML = "<tr><th> Assignment </th><th> Grade </th><th> </th></tr>";
  1453. //Loop Through Parse and show all tests returned
  1454. var currentHTML = document.getElementById("gradeTable");
  1455.  
  1456. //Loops
  1457. for( var key in JsonStr.dbTests){
  1458. //User level
  1459. for( var key2 in JsonStr.dbTests[key]){
  1460. if(key2!=studentname){ continue; }
  1461. var status = JsonStr.dbTests[key][key2]['status'];
  1462. var user = key2;
  1463. var name = key;
  1464. var grade = parseInt(JsonStr.dbTests[key][key2]['grade'], 10);
  1465. var max = JsonStr.dbTests[key][key2]['maxscore'];
  1466. if(status=='none'){
  1467. break;
  1468. }
  1469. var input = "<tr><td>" + name + "</td>";
  1470. if(status=='posted'){
  1471. input += "<td>" + " -- / " + max + "</td>";
  1472. input += "<td class=\"enterInfo\"><input type='button' disabled value='Test Still in Progress'></td>";
  1473. }
  1474. if(status=='pregrade'){
  1475. input += "<td>" + " -- / " + max + "</td>";
  1476. input += "<td class=\"enterInfo\"><input type='button' disabled value='Grade Not Released'></td>";
  1477. }
  1478. if(status=='graded'){
  1479. input += "<td>" + grade + " / " + max + "</td>";
  1480. input += "<td class=\"enterInfo\"><input type='button' onclick=\"gotoPreviewGrade(\'"+user+"\', this)\" value='ViewGrade'></td>";
  1481. }
  1482. input += "</tr>";
  1483. currentHTML.innerHTML = currentHTML.innerHTML + input;
  1484. break;
  1485. }
  1486. }
  1487. }
  1488. catch(err){
  1489.  
  1490. }
  1491.  
  1492. }
  1493. }
  1494. xhttp.open("POST", "https://web.njit.edu/~jrp68/CS490/curlRegistrar.php", true);
  1495. xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  1496. xhttp.send(query);
  1497. }
  1498. function TakeTest(name, user){
  1499. createCookie("testName", name, 2);
  1500. createCookie("userName", user, 2);
  1501. location.href = 'https://web.njit.edu/~jrp68/CS490/takeTest.html';
  1502. }
  1503. function gotoPreviewGrade(user, index){
  1504. var row = index.parentNode.parentNode;
  1505. var rowNum = row.rowIndex;
  1506. var test = document.getElementById("gradeTable").rows[rowNum].cells[0].innerHTML;
  1507. var student = user;
  1508. createCookie("testName", test, 2);
  1509. createCookie("studentName", student, 2);
  1510. location.href = 'https://web.njit.edu/~jrp68/CS490/studentviewGrade.html';
  1511. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement