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

« back to all changes in this revision

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

  • Committer: wagrant
  • Date: 2008-12-20 03:46:56 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:1060
Make IVLE work fine in Firefox 3.1 (ie. Gecko/XULRunner 1.9.1). Gecko 1.9.1 has
a built-in JSON object, so our json2.js isn't used, and compatibility problems
arise. The only one significant to us is that Gecko's doesn't support having
a primitive as the root object. Unfortunately we use that sort of thing in a
few places, so IVLE ends up pretty much broken.

A few adjustments were needed both client- and server-side for proto changes:

 - consoleservice and the JS interacting with it now deal with the key returned
   by start_server in a dict like {'key': ...}.
 - tutorialservice and interacting JS deal with code returned by getattempt in
   a dict like {'code': ...}.


The JS repr() implementation used JSON.stringify on the given object, and was
used only with primitive objects in order to create function calls. This needed
to be eliminated for compatibility with the new Gecko, so these call
constructions were replaced with better events:

 - listing.js constructed events for generated file listings by repr()ing some
   strings. That is foul, so we instead use DOM operations from 'this' in a
   somewhat nicer event handler.
 - tutorial.js previously created save_exercise() call strings by repr()ing
   lots of stuff. That was really bad, and broke like the rest. I replaced it
   with something that's still bad, but not quite as awful - grabbing the call
   string from the save button. This should be fixed at some point.
 - console.js had some strange Firebug logging stuff which used repr(). I
   removed it, as it shouldn't have been in released code in the first place.

repr() itself was removed after all references were.
   

Show diffs side-by-side

added added

removed removed

Lines of Context:
185
185
        /* Enable the button */
186
186
        button.disabled = false;
187
187
        /* Create a timer which will auto-save when it expires */
188
 
        var save_string = "saveexercise(" + repr(exerciseid) + ", "
189
 
            + repr(filename) + ")"
 
188
 
 
189
        /* XXX: This is bad, but it's better than using repr and I want this
 
190
         * fixed quickly (wgrant). */
 
191
        var save_string = document.getElementById("savebutton_" + exerciseid).onclick;
190
192
        savetimers[timername] = setTimeout(save_string, 10000);
191
193
    }
192
194
}
427
429
            var pre_sel = inp.value.substr(0, selstart);
428
430
            var in_sel = inp.value.substr(selstart, selend-selstart);
429
431
            var post_sel = inp.value.substr(selend);
430
 
            console.log("pre_sel = " + repr(pre_sel));
431
 
            console.log("in_sel = " + repr(in_sel));
432
 
            console.log("post_sel = " + repr(post_sel));
433
432
            /* Move everything after the last newline in pre_sel to in_sel,
434
433
             * so it will be indented too (ie. the first line
435
434
             * partially-selected). */
587
586
            var attempt;
588
587
            try
589
588
            {
590
 
                attempt = JSON.parse(xhr.responseText);
 
589
                attempt = JSON.parse(xhr.responseText).code;
591
590
            }
592
591
            catch (ex)
593
592
            {