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

« back to all changes in this revision

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

  • Committer: William Grant
  • Date: 2010-07-29 11:34:44 UTC
  • Revision ID: grantw@unimelb.edu.au-20100729113444-ht6s5kdcixvfubhr
Merge video and audio handlers, and reword them.

Show diffs side-by-side

added added

removed removed

Lines of Context:
357
357
        handle_image(path);
358
358
        break;
359
359
    case "video":
360
 
        handle_video(path, content_type);
 
360
        handle_html5_media(path, content_type, "video");
361
361
        break;
362
362
    case "audio":
363
 
        handle_audio(path, content_type);
 
363
        handle_html5_media(path, content_type, "audio");
364
364
        break;
365
365
    case "object":
366
366
        handle_object(path, content_type);
577
577
    $("#filesbody").append(div);
578
578
}
579
579
 
580
 
/** Displays a video.
581
 
 */
582
 
function handle_video(path, type)
583
 
{
584
 
    /* Disable save button and hide the save panel */
585
 
    using_codepress = false;
586
 
    disable_save();
587
 
 
588
 
    /* URL */
589
 
    var url = app_url(service_app, path) + "?return=contents";
590
 
    var download_url = app_url(download_app, path);
591
 
 
592
 
    /* Fallback Download Link */
593
 
    var link = $('<p>Could not display video in browser.<p><p><a /></p>');
594
 
    var a = link.find('a');
595
 
    a.attr("href", download_url);
596
 
    a.text("Download " + path);
597
 
 
598
 
    /* Fallback Object Tag */
599
 
    var obj = $('<object />');
600
 
    obj.attr("type", type);
601
 
    obj.attr("data", url);
602
 
    obj.append(link);
603
 
 
604
 
    /* HTML 5 Video Tag */
605
 
    var video = $('<video controls="true" autoplay="true" />');
606
 
    video.attr("src", url);
607
 
    var support = video[0].canPlayType && video[0].canPlayType(type);
608
 
    if (support != "probably" && support != "maybe") {
609
 
        // Use Fallback
610
 
        video = obj;
611
 
    }
612
 
 
613
 
    /* Show Preview */
614
 
    var div = $('<div class="padding" />');
615
 
    div.append('<h1>Video Preview</h1>');
616
 
    div.append(video);
617
 
    $("#filesbody").append(div);
618
 
}
619
 
 
620
 
/** Display audio content
621
 
 */
622
 
function handle_audio(path, type)
623
 
{
624
 
    /* Disable save button and hide the save panel */
625
 
    using_codepress = false;
626
 
    disable_save();
627
 
 
628
 
    /* URL */
629
 
    var url = app_url(service_app, path) + "?return=contents";
630
 
    var download_url = app_url(download_app, path);
631
 
 
632
 
    /* Fallback Download Link */
633
 
    var link = $('<p>Could not display audio in browser.<p><p><a /></p>');
634
 
    var a = link.find('a');
635
 
    a.attr("href", download_url);
636
 
    a.text("Download " + path);
637
 
 
638
 
    /* Fallback Object Tag */
639
 
    var obj = $('<object />');
640
 
    obj.attr("type", type);
641
 
    obj.attr("data", url);
642
 
    obj.append(link);
643
 
 
644
 
    /* HTML 5 Audio Tag */
645
 
    var audio = $('<audio controls="true" autoplay="true" />');
646
 
    audio.attr("src", url);
647
 
    var support = audio[0].canPlayType && audio[0].canPlayType(type);
648
 
    if (support != "probably" && support != "maybe") {
649
 
        // Use Fallback
650
 
        audio = obj;
651
 
    }
652
 
 
653
 
    /* Show Preview */
654
 
    var div = $('<div class="padding" />');
655
 
    div.append('<h1>Audio Preview</h1>');
656
 
    div.append(audio);
 
580
/* Displays a media file using an HTML5 <audio> or <video> tag.
 
581
 * Falls back to <object> if the format is unsupported.
 
582
 */
 
583
function handle_html5_media(path, type, tag_name)
 
584
{
 
585
    /* Disable save button and hide the save panel */
 
586
    using_codepress = false;
 
587
    disable_save();
 
588
 
 
589
    /* URL */
 
590
    var url = app_url(service_app, path) + "?return=contents";
 
591
    var download_url = app_url(download_app, path);
 
592
 
 
593
    /* Fallback download link */
 
594
    var link = $(
 
595
        '<p>Could not play ' + tag_name + ' file. ' +
 
596
        'Try <a>downloading it</a> instead.</p>');
 
597
    link.find('a').attr("href", download_url);
 
598
 
 
599
    /* HTML 5 media element */
 
600
    var html5_element = $(
 
601
        '<' + tag_name + ' controls="true" autoplay="true" />');
 
602
    html5_element.attr("src", url);
 
603
    var support = (html5_element[0].canPlayType &&
 
604
                   html5_element[0].canPlayType(type));
 
605
 
 
606
    /* If the browser thinks it might be able to play it, use the HTML5
 
607
     * element. Otherwise, fall back to an <object>, which might work.
 
608
     */
 
609
    if (support == "probably" || support == "maybe") {
 
610
        var element = html5_element;
 
611
    } else {
 
612
        var element = $('<object />');
 
613
        element.attr("type", type);
 
614
        element.attr("data", url);
 
615
    }
 
616
    element.append(link);
 
617
 
 
618
    /* Show Preview */
 
619
    var div = $('<div class="padding" />');
 
620
    div.append('<h1>File preview</h1>');
 
621
    div.append(element);
657
622
    $("#filesbody").append(div);
658
623
}
659
624