~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/media/tutorial/tutorial.js

Updated the Worksheets to use a new tutorialservice, hosted in the
new webapps dir.

This now means the worksheets use RESTful calls to the server when
performing their Ajax

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* IVLE - Informatics Virtual Learning Environment
2
 
 * Copyright (C) 2007-2008 The University of Melbourne
 
2
 * Copyright (C) 2007-2009 The University of Melbourne
3
3
 *
4
4
 * This program is free software; you can redistribute it and/or modify
5
5
 * it under the terms of the GNU General Public License as published by
63
63
    var exercisebox = exercisediv.getElementsByTagName("textarea")[0];
64
64
    var code = exercisebox.value;
65
65
 
66
 
    var args = {"code": code, "exercise": filename, "action": "test"};
 
66
    var args = {'code': code};
67
67
 
68
68
    /* Send the form as multipart/form-data, since we are sending a whole lump
69
69
     * of Python code, it should be treated like a file upload. */
90
90
            /* Close the "view previous" area (force reload) */
91
91
            close_previous(exerciseid);
92
92
        }
93
 
    ajax_call(callback, "tutorialservice", "", args, "POST",
94
 
        "multipart/form-data");
 
93
    attempts_path = "api/subjects/" + subject + "/+worksheets/" + worksheet 
 
94
        + "/" + filename + '/+attempts/' + username;
 
95
    ajax_call(callback, attempts_path, "", args, "PUT", "application/json");
95
96
}
96
97
 
97
98
/** User clicks "Save" button. Do an Ajax call to store it.
107
108
    var exercisebox = exercisediv.getElementsByTagName("textarea")[0];
108
109
    var code = exercisebox.value;
109
110
 
110
 
    var args = {"code": code, "exercise": filename, "action": "save"};
 
111
    var args = {"text": code, "ivle.op": "save"};
111
112
 
112
113
    /* Send the form as multipart/form-data, since we are sending a whole lump
113
114
     * of Python code, it should be treated like a file upload. */
117
118
            // XXX Maybe check to see if this worked?
118
119
            set_saved_status(exerciseid, filename, "Saved");
119
120
        }
120
 
    ajax_call(callback, "tutorialservice", "", args, "POST",
121
 
        "multipart/form-data");
 
121
        
 
122
    call_path = 'api/subjects/' + subject + '/+worksheets/' + worksheet + 
 
123
                                                                '/' + filename;
 
124
    ajax_call(callback, call_path, "", args, "POST");
122
125
}
123
126
 
124
127
/** User clicks "Reset" button. Replace the contents of the user program text
471
474
    var exercisediv = document.getElementById(exerciseid);
472
475
    var divs = exercisediv.getElementsByTagName("div");
473
476
    var attempthistory;
 
477
    var attempts_path;
474
478
    for (var i=0; i<divs.length; i++)
475
479
        if (divs[i].getAttribute("class") == "attempthistory")
476
480
            attempthistory = divs[i];
490
494
    pleasewait.appendChild(document.createTextNode("Retrieving past attempts..."));
491
495
    dropdown.appendChild(pleasewait);
492
496
 
493
 
    var args = {"exercise": filename, "action": "getattempts"};
494
 
 
495
497
    /* Send the form as multipart/form-data, since we are sending a whole lump
496
498
     * of Python code, it should be treated like a file upload. */
497
499
    /* AJAX callback function */
534
536
                dropdown.appendChild(opt);
535
537
            }
536
538
        }
537
 
    ajax_call(callback, "tutorialservice", "", args, "GET");
 
539
    attempts_path = "api/subjects/" + subject + "/+worksheets/" + worksheet 
 
540
        + "/" + filename + '/+attempts/' + username;
 
541
    ajax_call(callback, attempts_path, "", {}, "GET");
538
542
}
539
543
 
540
544
function close_previous(exerciseid)
565
569
    var exercisediv = document.getElementById(exerciseid);
566
570
    var divs = exercisediv.getElementsByTagName("div");
567
571
    var attempthistory;
 
572
    var call_path
568
573
    for (var i=0; i<divs.length; i++)
569
574
        if (divs[i].getAttribute("class") == "attempthistory")
570
575
            attempthistory = divs[i];
605
610
            textarea.appendChild(document.createTextNode(attempt));
606
611
            textarea.setAttribute("style", "display: auto");
607
612
        }
608
 
    ajax_call(callback, "tutorialservice", "", args, "GET");
 
613
        
 
614
    call_path = "api/subjects/" + subject + '/+worksheets/' + worksheet + '/' 
 
615
                        + filename + '/+attempts/' + username + '/' + date;
 
616
    ajax_call(callback, call_path, "", args, "GET");
609
617
}