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

« back to all changes in this revision

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

  • Committer: mattgiuca
  • Date: 2008-01-29 21:56:11 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:327
browser: Renamed "Published directory" label to "Published to the web".
(More descriptive)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* IVLE - Informatics Virtual Learning Environment
2
 
 * Copyright (C) 2007-2008 The University of Melbourne
3
 
 *
4
 
 * This program is free software; you can redistribute it and/or modify
5
 
 * it under the terms of the GNU General Public License as published by
6
 
 * the Free Software Foundation; either version 2 of the License, or
7
 
 * (at your option) any later version.
8
 
 *
9
 
 * This program is distributed in the hope that it will be useful,
10
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
 * GNU General Public License for more details.
13
 
 *
14
 
 * You should have received a copy of the GNU General Public License
15
 
 * along with this program; if not, write to the Free Software
16
 
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
 
 *
18
 
 * Module: Console (Client-side JavaScript)
19
 
 * Author: Tom Conway, Matt Giuca
20
 
 * Date: 30/1/2008
21
 
 */
22
 
 
23
1
digest_constant = "hello";
24
2
 
25
3
var server_host;
26
4
var server_port;
27
5
var server_magic;
28
6
 
29
 
/* Console DOM objects */
30
 
console_body = null;
31
 
console_filler = null;
32
 
 
33
7
/* Starts the console server.
34
8
 * Returns an object with fields "host", "port", "magic" describing the
35
9
 * server.
41
15
    return JSON.parse(json_text);
42
16
}
43
17
 
44
 
/** Initialises the console. All apps which import console are required to
45
 
 * call this function.
46
 
 * Optional "windowpane" (bool), if true, will cause the console to go into
47
 
 * "window pane" mode which will allow it to be opened and closed, and float
48
 
 * over the page.
49
 
 * (Defaults to closed).
50
 
 */
51
 
function console_init(windowpane)
 
18
function onload()
52
19
{
53
 
    /* Set up the console as a floating pane */
54
 
    console_body = document.getElementById("console_body");
55
 
    console_filler = document.getElementById("console_filler");
56
 
    if (windowpane)
57
 
        console_minimize();
58
20
    /* Start the server */
59
21
    var server_info = start_server();
60
22
    server_host = server_info.host;
62
24
    server_magic = server_info.magic;
63
25
}
64
26
 
65
 
/** Hide the main console panel, so the console minimizes to just an input box
66
 
 *  at the page bottom. */
67
 
function console_minimize()
68
 
{
69
 
    console_body.setAttribute("class", "windowpane minimal");
70
 
    console_filler.setAttribute("class", "windowpane minimal");
71
 
}
72
 
 
73
 
/** Show the main console panel, so it enlarges out to its full size.
74
 
 */
75
 
function console_maximize()
76
 
{
77
 
    console_body.setAttribute("class", "windowpane maximal");
78
 
    console_filler.setAttribute("class", "windowpane maximal");
79
 
}
80
 
 
81
27
/* Below here imported from trunk/console/console.js
82
28
 * (Tom Conway)
83
29
 */
155
101
 
156
102
var hist = new History();
157
103
 
158
 
/** Send a line of text to the Python server, wait for its return, and react
159
 
 * to its response by writing to the output box.
160
 
 * Also maximize the console window if not already.
161
 
 */
162
 
function console_enter_line(inputline)
 
104
function enter_line()
163
105
{
164
 
    var digest = hex_md5(inputline + magic);
 
106
    var inp = document.getElementById('inputText');
 
107
    var digest = hex_md5(inp.value + magic);
165
108
    var args = {"host": server_host, "port": server_port,
166
 
                    "digest":digest, "text":inputline};
 
109
                    "digest":digest, "text":inp.value};
167
110
    var xmlhttp = ajax_call("consoleservice", "chat", args, "POST");
168
111
 
169
112
    var res = JSON.parse(xmlhttp.responseText);
170
 
    var output = document.getElementById("console_output");
 
113
    var output = document.getElementById("output");
171
114
    {
172
115
        var pre = document.createElement("pre");
173
116
        pre.setAttribute("class", "inputMsg");
174
 
        pre.appendChild(document.createTextNode(inputline + "\n"));
 
117
        pre.appendChild(document.createTextNode(inp.value + "\n"));
175
118
        output.appendChild(pre);
176
119
    }
177
120
    if (res.hasOwnProperty('okay'))
191
134
            output.appendChild(pre);
192
135
        }
193
136
        // set the prompt to >>>
194
 
        var prompt = document.getElementById("console_prompt");
 
137
        var prompt = document.getElementById("prompt");
195
138
        prompt.replaceChild(document.createTextNode(">>> "), prompt.firstChild);
196
139
    }
197
140
    else if (res.hasOwnProperty('exc'))
206
149
    else if (res.hasOwnProperty('more'))
207
150
    {
208
151
        // Need more input, so set the prompt to ...
209
 
        var prompt = document.getElementById("console_prompt");
 
152
        var prompt = document.getElementById("prompt");
210
153
        prompt.replaceChild(document.createTextNode("... "), prompt.firstChild);
211
154
    }
212
155
    else {
213
156
        // assert res.hasOwnProperty('input')
214
 
        var prompt = document.getElementById("console_prompt");
 
157
        var prompt = document.getElementById("prompt");
215
158
        prompt.replaceChild(document.createTextNode("+++ "), prompt.firstChild);
216
159
    }
217
 
    /* Open up the console so we can see the output */
218
 
    console_maximize();
219
160
}
220
161
 
221
162
function catch_input(key)
222
163
{
223
 
    var inp = document.getElementById('console_inputText');
 
164
    var inp = document.getElementById('inputText');
224
165
    if (key == 13)
225
166
    {
226
 
        console_enter_line(inp.value);
 
167
        enter_line();
227
168
        hist.add(inp.value);
228
169
        inp.value = hist.curr();
229
170
    }