1
function disable_save_if_safe()
3
/* If this is defined, this engine supports change notification, so is able
4
* to enable the button again. Disable it for them. */
5
if(editbox.editor.addChangeHandler)
7
var savebutton = document.getElementById("save_button");
8
savebutton.disabled = true;
12
3
function save_file()
14
var filename = document.getElementById("save_filename").value;
15
data = editbox.getCode();
16
/* Do NOT refresh the page contents (causes problems for editarea and is
18
do_action("putfile", filename,
19
{"path":".", "data":data, "overwrite":"true"},
20
"multipart/form-data", true);
21
disable_save_if_safe();
5
filename = document.getElementById("save_filename").value;
6
data = editAreaLoader.getValue("editbox");
7
do_action("putfile", filename, {"path":".", "data":data});
8
saved_status.data = "Saved.";
24
11
function edit_text()
26
var savebutton = document.getElementById("save_button");
27
savebutton.disabled = false;
13
saved_status.data = "Not saved.";
30
/** Presents the "editor heading" inserting it into a given element at
31
* the front. Note that the save widget is handled by the Python.
16
/** Presents the text editor.
33
function present_editorhead(elem, path, handler_type)
18
function handle_text(path, text, handler_type)
35
var div = document.getElementById("actions2");
20
/* Create a textarea with the text in it
21
* (The makings of a primitive editor).
25
var files = document.getElementById("filesbody");
26
var div = document.createElement("div");
27
files.appendChild(div);
28
div.setAttribute("class", "padding");
30
/* Set up minimal interface */
31
var p = dom_make_text_elem("p", "Path: ");
32
var pathname = document.createElement("input");
33
pathname.setAttribute("type", "text");
34
pathname.setAttribute("size", "30");
35
pathname.setAttribute("id", "save_filename");
36
pathname.setAttribute("value", path);
37
p.appendChild(pathname);
38
var savebutton = document.createElement("input");
39
savebutton.setAttribute("type", "button");
40
savebutton.setAttribute("value", "Save");
41
savebutton.setAttribute("onclick", "save_file()");
42
p.appendChild(savebutton);
43
var t = document.createTextNode(" ");
45
saved_status = document.createTextNode("Saved.");
46
//p.appendChild(saved_status);
37
49
/* Print a warning message if this is not actually a text file.
44
56
"you save this file, you could corrupt it.");
45
57
div.appendChild(warn);
49
/** Presents the text editor.
51
function handle_text(path, text, handler_type)
53
/* Create a textarea with the text in it
54
* (The makings of a primitive editor).
56
var files = document.getElementById("filesbody");
57
/* Put our UI at the top */
58
present_editorhead(files, path, handler_type);
60
var div = document.createElement("div");
61
div.style.height = '100%';
62
files.appendChild(div);
63
59
var txt_elem = dom_make_text_elem("textarea",
65
61
div.appendChild(txt_elem);
66
62
txt_elem.setAttribute("id", "editbox");
67
language = language_from_mime(current_file.type)
69
// Assume plaintext if no type can be determined.
70
txt_elem.className = "codepress " + (language ? language : 'text');
71
63
txt_elem.setAttribute("onchange", "edit_text()");
72
64
/* TODO: Make CSS height: 100% work */
73
65
txt_elem.setAttribute("rows", "35");
76
/* And set a callback so we know that the editor iframe is loaded so we
77
* can set a callback so we know when to enable the save button.
78
* We also take this opportunity to disable the save button, if
79
* the browser is likely to reenable it as needed. */
80
editbox.onload = function() {editbox.addChangeHandler(edit_text);
81
disable_save_if_safe(); };
84
function language_from_mime(mime)
86
return {'text/x-python': 'python',
87
'application/javascript': 'javascript',
91
'application/xhtml+xml': 'html'}[mime];
67
/* Load EditArea into the editbox */