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

« back to all changes in this revision

Viewing changes to ivle/webapp/filesystem/browser/media/editor.js

  • Committer: David Coles
  • Date: 2010-07-28 10:52:48 UTC
  • mfrom: (1791.2.10 mediahandlers)
  • Revision ID: coles.david@gmail.com-20100728105248-zvbn9g72v1nsskvd
A series of HTML5 based media handlers using the <audio> and <video> tags.  
This replaces the previous page that just showed a download link (which is 
already available on the menu).

Also solves issue where media files were downloaded by the client twice (once 
in an AJAX request intended only for text).

Known issues:
    * Bug #588285: External BHO will not be able to play media due to not
      having IVLE cookie.
    * Bug #610745: Does not correctly preview revisions
    * Bug #610780: Ogg media does not work in Chromium

Show diffs side-by-side

added added

removed removed

Lines of Context:
58
58
    window.onbeforeunload = confirm_beforeunload;
59
59
}
60
60
 
61
 
/** Presents the "editor heading" inserting it into a given element at
62
 
 *  the front. Note that the save widget is handled by the Python.
63
 
 */
64
 
function present_editorhead(elem, path, handler_type)
65
 
{
66
 
    var div = document.getElementById("actions2");
67
 
 
68
 
    /* Print a warning message if this is not actually a text file.
69
 
     */
70
 
    if (handler_type != "text")
71
 
    {
72
 
        var warn = dom_make_text_elem("p",
73
 
            "Warning: You are editing a binary " +
74
 
            "file, which explains any strange characters you may see. If " +
75
 
            "you save this file, you could corrupt it.");
76
 
        div.appendChild(warn);
77
 
    }
78
 
}
79
 
 
80
61
function highlighting_changed(select)
81
62
{
82
63
    codemirror_language(select.value);
84
65
 
85
66
/** Presents the text editor.
86
67
 */
87
 
function handle_text(path, text, handler_type)
 
68
function handle_text(path, content_type, url_args)
 
69
{
 
70
    /* Need to make a 2nd ajax call, this time get the actual file
 
71
     * contents */
 
72
    callback = function(response)
 
73
        {
 
74
            /* Read the response and set up the page accordingly */
 
75
            handle_text_response(path, content_type, response.responseText);
 
76
        }
 
77
    /* Call the server and request the listing. */
 
78
    if (url_args)
 
79
        args = shallow_clone_object(url_args);
 
80
    else
 
81
        args = {};
 
82
    /* This time, get the contents of the file, not its metadata */
 
83
    args['return'] = "contents";
 
84
    ajax_call(callback, service_app, path, args, "GET");
 
85
}
 
86
 
 
87
function handle_text_response(path, content_type, response_text)
88
88
{
89
89
    /* Create a textarea with the text in it
90
90
     * (The makings of a primitive editor).
91
91
     */
92
92
    var files = document.getElementById("filesbody");
93
 
    /* Put our UI at the top */
94
 
    present_editorhead(files, path, handler_type);
95
93
 
96
94
    var div = document.createElement("div");
97
95
    div.style.height = '100%';
98
96
    files.appendChild(div);
99
97
    var txt_elem = document.createElement("textarea");
100
 
    txt_elem.value = text.toString();
 
98
    txt_elem.value = response_text.toString();
101
99
    div.appendChild(txt_elem);
102
100
    txt_elem.setAttribute("id", "editbox");
103
 
    language = language_from_mime(current_file.type);
 
101
    language = language_from_mime(content_type);
104
102
 
105
103
    // Assume plaintext if no type can be determined.
106
104
    language = language ? language : "text";
176
174
    } else {
177
175
        codemirror.setParser("DummyParser")
178
176
    }
 
177
 
 
178
    // Show actions bar
 
179
    $("#actions2_file").show();
179
180
}
180
181
 
181
182
function language_from_mime(mime)