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

« back to all changes in this revision

Viewing changes to ivle/webapp/console/media/console.js

  • Committer: Matt Giuca
  • Date: 2009-12-01 04:27:58 UTC
  • mfrom: (1164.2.46 sphinx-docs)
  • Revision ID: matt.giuca@gmail.com-20091201042758-wuxd9bdec00c283i
Merged sphinx-docs branch. This adds Sphinx documentation for the entire IVLE system (for system administrators and developers), and removes all of our random old document files (all either irrelevant, or moved into the Sphinx docs nicely). Currently incomplete, but ready to merge.

Show diffs side-by-side

added added

removed removed

Lines of Context:
58
58
    var callback1 = function(xhr)
59
59
        {
60
60
            var json_text = xhr.responseText;
61
 
            server_key = JSON.parse(json_text);
 
61
            server_key = JSON.parse(json_text).key;
62
62
            server_started = true;
63
63
            if (callback != null)
64
64
                callback();
65
65
        }
66
66
 
67
67
    //var current_path;
68
 
    if(typeof(current_path) != 'undefined')
 
68
    if((typeof(current_path) != 'undefined') && current_file)
69
69
    {
70
70
        // We have a current_path - give a suggestion to the server
71
71
        var path;
81
81
            tmp_path.pop();
82
82
            path = path_join("/home", tmp_path.join('/'));
83
83
        }
84
 
        ajax_call(callback1, "consoleservice", "start", {"startdir": path}, "POST");
 
84
        ajax_call(callback1, "console", "service", {"ivle.op": "start", "cwd": path}, "POST");
85
85
    }
86
86
    else
87
87
    {
88
88
        // No current_path - let the server decide
89
 
        ajax_call(callback1, "consoleservice", "start", {}, "POST");
 
89
        ajax_call(callback1, "console", "service", {"ivle.op": "start"}, "POST");
90
90
    }
91
91
}
92
92
 
254
254
 
255
255
    if (typeof(inputbox) == "string")
256
256
    {
257
 
        var inputline = inputbox;
 
257
        var inputline = inputbox + "\n";
258
258
        inputbox = null;
259
 
        var graytimer = null;
260
259
    }
261
260
    else
262
261
    {
263
 
        GLOBAL_inputbox = inputbox;     /* For timer */
264
 
        var inputline = inputbox.value;
265
 
        var graytimer = setTimeout("GLOBAL_inputbox.setAttribute(\"class\", "
266
 
            + "\"disabled\");", 100);
 
262
        /* Disable the text box */
 
263
        inputbox.setAttribute("disabled", "disabled");
 
264
 
 
265
        var inputline = inputbox.value + "\n";
267
266
    }
268
267
    var output = document.getElementById("console_output");
269
268
    {
270
269
        // Print ">>>" span
271
270
        var span = document.createElement("span");
272
271
        span.setAttribute("class", "inputPrompt");
273
 
        span.appendChild(document.createTextNode(">>> "));
 
272
        span.appendChild(document.createTextNode(
 
273
              document.getElementById("console_prompt").firstChild.nodeValue)
 
274
                        );
274
275
        output.appendChild(span);
275
276
        // Print input line itself in a span
276
277
        var span = document.createElement("span");
277
278
        span.setAttribute("class", "inputMsg");
278
 
        span.appendChild(document.createTextNode(inputline + "\n"));
 
279
        span.appendChild(document.createTextNode(inputline));
279
280
        output.appendChild(span);
280
281
    }
281
 
    var args = {"key": server_key, "text":inputline};
 
282
    var args = {"ivle.op": "chat", "kind": which, "key": server_key, "text":inputline};
282
283
    var callback = function(xhr)
283
284
        {
284
 
            console_response(inputbox, graytimer, inputline, xhr.responseText);
 
285
            console_response(inputbox, inputline, xhr.responseText);
285
286
        }
286
 
    /* Disable the text box */
287
 
    if (inputbox != null)
288
 
        inputbox.setAttribute("disabled", "disabled");
289
 
    ajax_call(callback, "consoleservice", which, args, "POST");
 
287
    ajax_call(callback, "console", "service", args, "POST");
290
288
}
291
289
 
292
 
function console_response(inputbox, graytimer, inputline, responseText)
 
290
function console_response(inputbox, inputline, responseText)
293
291
{
294
292
    try
295
293
    {
303
301
    var output = document.getElementById("console_output");
304
302
    if (res.hasOwnProperty('okay'))
305
303
    {
 
304
        // Success!
 
305
        if (res.okay)
 
306
        {
 
307
            output.appendChild(document.createTextNode(res.okay + "\n"));
 
308
            output.appendChild(span);
 
309
        }
306
310
        // set the prompt to >>>
307
 
        var prompt = document.getElementById("console_prompt");
308
 
        prompt.replaceChild(document.createTextNode(">>> "), prompt.firstChild);
 
311
        set_prompt(">>>");
309
312
    }
310
313
    else if (res.hasOwnProperty('exc'))
311
314
    {
312
315
        // Failure!
313
316
        // print out the error message (res.exc)
314
 
        var span = document.createElement("span");
315
 
        span.setAttribute("class", "errorMsg");
316
 
        span.appendChild(document.createTextNode(res.exc + "\n"));
317
 
        output.appendChild(span);
 
317
        print_error(res.exc);
 
318
        
318
319
        // set the prompt to >>>
319
 
        var prompt = document.getElementById("console_prompt");
320
 
        prompt.replaceChild(document.createTextNode(">>> "), prompt.firstChild);
 
320
        set_prompt(">>>");
321
321
    }
322
322
    else if (res.hasOwnProperty('restart') && res.hasOwnProperty('key'))
323
323
    {
328
328
 
329
329
        // Print a reason to explain why we'd do such a horrible thing
330
330
        // (console timeout, server error etc.)
331
 
        var span = document.createElement("span");
332
 
        span.setAttribute("class", "errorMsg");
333
 
        span.appendChild(document.createTextNode("Console Restart: " + res.restart + "\n"));
334
 
        output.appendChild(span);
 
331
        print_error("Console Restart: " + res.restart);
 
332
        
335
333
        // set the prompt to >>>
336
 
        var prompt = document.getElementById("console_prompt");
337
 
        prompt.replaceChild(document.createTextNode(">>> "), prompt.firstChild);
338
 
 
 
334
        set_prompt(">>>");
339
335
    }
340
336
    else if (res.hasOwnProperty('more'))
341
337
    {
342
338
        // Need more input, so set the prompt to ...
343
 
        var prompt = document.getElementById("console_prompt");
344
 
        prompt.replaceChild(document.createTextNode("... "), prompt.firstChild);
 
339
        set_prompt("...");
345
340
    }
346
341
    else if (res.hasOwnProperty('output'))
347
342
    {
351
346
        }
352
347
        var callback = function(xhr)
353
348
            {
354
 
                console_response(inputbox, graytimer,
355
 
                                 null, xhr.responseText);
 
349
                console_response(inputbox, null, xhr.responseText);
356
350
            }
357
351
        if (interrupted)
358
352
        {
362
356
        {
363
357
            var kind = "chat";
364
358
        }
365
 
        var args = {"key": server_key, "text":''};
366
 
        ajax_call(callback, "consoleservice", kind, args, "POST");
 
359
        var args = {"ivle.op": "chat", "kind": kind, "key": server_key, "text":''};
 
360
        ajax_call(callback, "console", "service", args, "POST");
367
361
 
368
362
        // Open up the console so we can see the output
369
363
        // FIXME: do we need to maximize here?
375
369
        // Return early, so we don't re-enable the input box.
376
370
        return;
377
371
    }
378
 
    else {
 
372
    else
 
373
    {
379
374
        // assert res.hasOwnProperty('input')
380
 
        var prompt = document.getElementById("console_prompt");
381
 
        prompt.replaceChild(document.createTextNode("+++ "), prompt.firstChild);
 
375
        set_prompt("...");
382
376
    }
383
377
 
384
378
    if (inputbox != null)
385
379
    {
386
380
        /* Re-enable the text box */
387
 
        clearTimeout(graytimer);
388
381
        inputbox.removeAttribute("disabled");
389
 
        inputbox.removeAttribute("class");
390
382
        interrupted = false;
391
383
    }
392
384
 
396
388
    divScroll.activeScroll();
397
389
 
398
390
    // Focus the input box by default
399
 
    document.getElementById("console_output").focus()
400
 
    document.getElementById("console_inputText").focus()
 
391
    document.getElementById("console_output").focus();
 
392
    document.getElementById("console_inputText").focus();
401
393
}
402
394
 
403
395
function catch_input(key)
448
440
    case 38:                /* Up arrow */
449
441
        hist.up(inp.value);
450
442
        inp.value = hist.curr();
 
443
        /* Inhibit further responses to this event, or WebKit moves the
 
444
         * cursor to the start. */
 
445
        return false;
451
446
        break;
452
447
    case 40:                /* Down arrow */
453
448
        hist.down(inp.value);
454
449
        inp.value = hist.curr();
 
450
        return false;
455
451
        break;
456
452
    }
457
453
}
458
454
 
 
455
/** Resets the console by signalling the old console to expire and starting a 
 
456
 * new one.
 
457
 */
 
458
function console_reset()
 
459
{
 
460
    // FIXME: We show some feedback here - either disable input or at very 
 
461
    // least the reset button.
 
462
 
 
463
    // Restart the console
 
464
    if(!server_started)
 
465
    {
 
466
        start_server(null);
 
467
    }
 
468
    else
 
469
    {
 
470
        xhr = ajax_call(null, "console", "service", {"ivle.op": "chat", "kind": "terminate", "key": server_key}, "POST");
 
471
        console_response(null, null, xhr.responseText);
 
472
    }
 
473
}
 
474
 
 
475
/** Prints an error line in the console **/
 
476
function print_error(error)
 
477
 
478
    var output = document.getElementById("console_output");
 
479
  
 
480
    // Create text block
 
481
    var span = document.createElement("span");
 
482
    span.setAttribute("class", "errorMsg");
 
483
    span.appendChild(document.createTextNode(error + "\n"));
 
484
    output.appendChild(span);
 
485
 
 
486
    // Autoscroll
 
487
    divScroll.activeScroll();
 
488
}
 
489
 
 
490
/** Sets the prompt text **/
 
491
function set_prompt(prompt_text)
 
492
{
 
493
    var prompt = document.getElementById("console_prompt");
 
494
    prompt.replaceChild(document.createTextNode(prompt_text + " "), prompt.firstChild);
 
495
}
 
496
 
459
497
/**** Following Code modified from ******************************************/
460
498
/**** http://radio.javaranch.com/pascarello/2006/08/17/1155837038219.html ***/
461
499
/****************************************************************************/
473
511
        
474
512
    if (scrollDiv.scrollHeight > 0)
475
513
        currentHeight = scrollDiv.scrollHeight;
476
 
    else 
477
 
        if (objDiv.offsetHeight > 0)
478
 
            currentHeight = scrollDiv.offsetHeight;
 
514
    else if (scrollDiv.offsetHeight > 0)
 
515
        currentHeight = scrollDiv.offsetHeight;
479
516
 
480
517
    scrollDiv.scrollTop = currentHeight;
481
518