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

« back to all changes in this revision

Viewing changes to www/media/browser/editor.js

  • Committer: wagrant
  • Date: 2008-07-08 07:00:54 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:830
Add an svnlog app. It nicely displays all log entries for a path,
though it won't scale well.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
function disable_save_if_safe()
 
2
{
 
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)
 
6
    {
 
7
        var savebutton = document.getElementById("save_button");
 
8
        savebutton.disabled = true;
 
9
    }
 
10
}
 
11
 
 
12
function save_file()
 
13
{
 
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
 
17
     * unnecessary). */
 
18
    do_action("putfile", filename,
 
19
              {"path":".", "data":data, "overwrite":"true"},
 
20
              "multipart/form-data", true);
 
21
    disable_save_if_safe();
 
22
}
 
23
 
 
24
function edit_text()
 
25
{
 
26
    var savebutton = document.getElementById("save_button");
 
27
    savebutton.disabled = false;
 
28
}
 
29
 
 
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.
 
32
 */
 
33
function present_editorhead(elem, path, handler_type)
 
34
{
 
35
    var div = document.getElementById("actions2");
 
36
 
 
37
    /* Print a warning message if this is not actually a text file.
 
38
     */
 
39
    if (handler_type != "text")
 
40
    {
 
41
        var warn = dom_make_text_elem("p",
 
42
            "Warning: You are editing a binary " +
 
43
            "file, which explains any strange characters you may see. If " +
 
44
            "you save this file, you could corrupt it.");
 
45
        div.appendChild(warn);
 
46
    }
 
47
}
 
48
 
 
49
/** Presents the text editor.
 
50
 */
 
51
function handle_text(path, text, handler_type)
 
52
{
 
53
    /* Create a textarea with the text in it
 
54
     * (The makings of a primitive editor).
 
55
     */
 
56
    var files = document.getElementById("filesbody");
 
57
    /* Put our UI at the top */
 
58
    present_editorhead(files, path, handler_type);
 
59
 
 
60
    var div = document.createElement("div");
 
61
    div.style.height = '100%';
 
62
    files.appendChild(div);
 
63
    var txt_elem = dom_make_text_elem("textarea",
 
64
        text.toString())
 
65
    div.appendChild(txt_elem);
 
66
    txt_elem.setAttribute("id", "editbox");
 
67
    language = language_from_mime(current_file.type)
 
68
 
 
69
    // Assume plaintext if no type can be determined.
 
70
    txt_elem.className = "codepress " + (language ? language : 'text');
 
71
    txt_elem.setAttribute("onchange", "edit_text()");
 
72
    /* TODO: Make CSS height: 100% work */
 
73
    txt_elem.setAttribute("rows", "35");
 
74
    CodePress.run();
 
75
 
 
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(); };
 
82
}
 
83
 
 
84
function language_from_mime(mime)
 
85
{
 
86
    return {'text/x-python': 'python',
 
87
            'application/javascript': 'javascript',
 
88
            'text/css': 'css',
 
89
            'text/plain': 'text',
 
90
            'text/html': 'html',
 
91
            'application/xhtml+xml': 'html'}[mime];
 
92
}