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

« back to all changes in this revision

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

  • Committer: William Grant
  • Date: 2009-12-08 03:50:24 UTC
  • mfrom: (1294.2.143 ui-the-third)
  • Revision ID: grantw@unimelb.edu.au-20091208035024-wjx8zp54gth15ph8
Merge ui-the-third. This is another UI revamp.

The header is now thin! Thin! The yellow bar is gone. The tabs are gone.
Breadcrumbs are here. Routes is replaced (with an object publishing
mechanism). Views are less repetitive. etc.

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
 
37
37
interrupted = false;
38
38
 
 
39
 
 
40
function get_console_start_directory()
 
41
{
 
42
    if((typeof(current_path) != 'undefined') && current_file)
 
43
    {
 
44
        // We have a current_path - give a suggestion to the server
 
45
        var path;
 
46
        if (current_file.isdir)
 
47
        {
 
48
            // Browser
 
49
            return path_join("/home", current_path);
 
50
        }
 
51
        else
 
52
        {
 
53
            // Editor - need to chop off filename
 
54
            var tmp_path = current_path.split('/');
 
55
            tmp_path.pop();
 
56
            return path_join("/home", tmp_path.join('/'));
 
57
        }
 
58
    }
 
59
    else
 
60
    {
 
61
        // No current_path - let the server decide
 
62
        return '';
 
63
    }
 
64
}
 
65
 
39
66
/* Starts the console server, if it isn't already.
40
67
 * This can be called any number of times - it only starts the one server.
41
68
 * Note that this is asynchronous. It will return after signalling to start
64
91
                callback();
65
92
        }
66
93
 
67
 
    //var current_path;
68
 
    if((typeof(current_path) != 'undefined') && current_file)
69
 
    {
70
 
        // We have a current_path - give a suggestion to the server
71
 
        var path;
72
 
        if (current_file.isdir)
73
 
        {
74
 
            // Browser
75
 
            path = path_join("/home", current_path);
76
 
        }
77
 
        else
78
 
        {
79
 
            // Editor - need to chop off filename
80
 
            var tmp_path = current_path.split('/');
81
 
            tmp_path.pop();
82
 
            path = path_join("/home", tmp_path.join('/'));
83
 
        }
84
 
        ajax_call(callback1, "consoleservice", "start", {"startdir": path}, "POST");
85
 
    }
86
 
    else
87
 
    {
88
 
        // No current_path - let the server decide
89
 
        ajax_call(callback1, "consoleservice", "start", {}, "POST");
90
 
    }
 
94
    ajax_call(
 
95
        callback1, "console", "service",
 
96
        {"ivle.op": "start", "cwd": get_console_start_directory()}, 
 
97
        "POST");
91
98
}
92
99
 
93
100
/** Initialises the console. All apps which import console are required to
254
261
 
255
262
    if (typeof(inputbox) == "string")
256
263
    {
257
 
        var inputline = inputbox;
 
264
        var inputline = inputbox + "\n";
258
265
        inputbox = null;
259
 
        var graytimer = null;
260
266
    }
261
267
    else
262
268
    {
263
 
        GLOBAL_inputbox = inputbox;     /* For timer */
 
269
        /* Disable the text box */
 
270
        inputbox.setAttribute("disabled", "disabled");
 
271
 
264
272
        var inputline = inputbox.value + "\n";
265
 
        var graytimer = setTimeout("GLOBAL_inputbox.setAttribute(\"class\", "
266
 
            + "\"disabled\");", 100);
267
273
    }
268
274
    var output = document.getElementById("console_output");
269
275
    {
271
277
        var span = document.createElement("span");
272
278
        span.setAttribute("class", "inputPrompt");
273
279
        span.appendChild(document.createTextNode(
274
 
              document.getElementById("console_prompt").firstChild.textContent)
 
280
              document.getElementById("console_prompt").firstChild.nodeValue)
275
281
                        );
276
282
        output.appendChild(span);
277
283
        // Print input line itself in a span
280
286
        span.appendChild(document.createTextNode(inputline));
281
287
        output.appendChild(span);
282
288
    }
283
 
    var args = {"key": server_key, "text":inputline};
 
289
    var args = {
 
290
        "ivle.op": "chat", "kind": which, "key": server_key,
 
291
        "text": inputline, "cwd": get_console_start_directory()
 
292
        };
284
293
    var callback = function(xhr)
285
294
        {
286
 
            console_response(inputbox, graytimer, inputline, xhr.responseText);
 
295
            console_response(inputbox, inputline, xhr.responseText);
287
296
        }
288
 
    /* Disable the text box */
289
 
    if (inputbox != null)
290
 
        inputbox.setAttribute("disabled", "disabled");
291
 
    ajax_call(callback, "consoleservice", which, args, "POST");
 
297
    ajax_call(callback, "console", "service", args, "POST");
292
298
}
293
299
 
294
 
function console_response(inputbox, graytimer, inputline, responseText)
 
300
function console_response(inputbox, inputline, responseText)
295
301
{
296
302
    try
297
303
    {
350
356
        }
351
357
        var callback = function(xhr)
352
358
            {
353
 
                console_response(inputbox, graytimer,
354
 
                                 null, xhr.responseText);
 
359
                console_response(inputbox, null, xhr.responseText);
355
360
            }
356
361
        if (interrupted)
357
362
        {
361
366
        {
362
367
            var kind = "chat";
363
368
        }
364
 
        var args = {"key": server_key, "text":''};
365
 
        ajax_call(callback, "consoleservice", kind, args, "POST");
 
369
        var args = {
 
370
            "ivle.op": "chat", "kind": kind, "key": server_key,
 
371
            "text": '', "cwd": get_console_start_directory()
 
372
            };
 
373
        ajax_call(callback, "console", "service", args, "POST");
366
374
 
367
375
        // Open up the console so we can see the output
368
376
        // FIXME: do we need to maximize here?
383
391
    if (inputbox != null)
384
392
    {
385
393
        /* Re-enable the text box */
386
 
        clearTimeout(graytimer);
387
394
        inputbox.removeAttribute("disabled");
388
 
        inputbox.removeAttribute("class");
389
395
        interrupted = false;
390
396
    }
391
397
 
441
447
            hist.submit(inp.value);
442
448
            inp.value = hist.curr();
443
449
        }
 
450
 
 
451
        /* Disable the text box. This will be redone by
 
452
         * console_enter_line, but we do it here too in case start_server
 
453
         * takes a while.
 
454
         */
 
455
        inp.setAttribute("disabled", "disabled");
444
456
        /* Start the server if it hasn't already been started */
445
457
        start_server(callback);
446
458
        break;
447
459
    case 38:                /* Up arrow */
448
460
        hist.up(inp.value);
449
461
        inp.value = hist.curr();
 
462
        /* Inhibit further responses to this event, or WebKit moves the
 
463
         * cursor to the start. */
 
464
        return false;
450
465
        break;
451
466
    case 40:                /* Down arrow */
452
467
        hist.down(inp.value);
453
468
        inp.value = hist.curr();
 
469
        return false;
454
470
        break;
455
471
    }
456
472
}
470
486
    }
471
487
    else
472
488
    {
473
 
        xhr = ajax_call(null, "consoleservice", "restart", {"key": server_key}, "POST");
474
 
        console_response(null, null, null, xhr.responseText);
 
489
        xhr = ajax_call(null, "console", "service", {"ivle.op": "chat", "kind": "terminate", "key": server_key, "cwd": get_console_start_directory()}, "POST");
 
490
        console_response(null, null, xhr.responseText);
475
491
    }
476
492
}
477
493