canvas-lms/public/javascripts/media_comments.js

765 lines
32 KiB
JavaScript

/**
* Copyright (C) 2011 Instructure, Inc.
*
* This file is part of Canvas.
*
* Canvas is free software: you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License as published by the Free
* Software Foundation, version 3 of the License.
*
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
I18n.scoped('media_comments', function(I18n) {
(function($, INST){
var yourVersion = null;
try {
yourVersion = swfobject.getFlashPlayerVersion().major + "." + swfobject.getFlashPlayerVersion().minor;
yourVersion = " (you have " + yourVersion + " installed)";
} catch(e) {
}
var flashRequiredMessage = "<div>" + $.h(I18n.t('messages.flash_required', "This video requires Flash version 9 or higher (you have %{version} installed).", { version: yourVersion })) +
"<br/><a target='_blank' href='http://get.adobe.com/flashplayer/'>" + $.h(I18n.t('links.upgrade_flash', "Click here to upgrade")) +"</a></div>";
$.fn.mediaComment = function(command, arg1, arg2, arg3, arg4, arg5) {
var id = arg1, mediaType = arg2, downloadUrl = arg3;
if(!INST.kalturaSettings) { console.log('Kaltura has not been enabled for this account'); return; }
if(command == 'create') {
mediaType = arg1;
var callback = arg2;
var cancel_callback = arg3;
var modal = arg4;
var defaultTitle = arg5;
$("#media_recorder_container").removeAttr('id').addClass('old_recorder_container');
this.attr('id', 'media_recorder_container').removeClass('old_recorder_container');
this.unbind('media_comment_created');
var $comment = this;
this.bind('media_comment_created', function(event, data) {
callback.call(this, data.id, data.mediaType);
});
$.mediaComment.init(mediaType, {
modal: modal,
close: function() {
if(cancel_callback && $.isFunction(cancel_callback)) {
cancel_callback.call($comment);
}
},
defaultTitle: defaultTitle
});
} else if(command == 'show_inline') {
var $div = $("<span/>");
if(mediaType != 'video' && mediaType != 'audio') {
if($(this).hasClass('audio_playback')) {
mediaType = 'audio';
} else {
mediaType = 'video';
}
}
$div.attr('id', 'media_comment_holder_' + Math.round(Math.random() * 10000));
var $holder = $(this);
if($(this).parent(".instructure_file_link_holder").length > 0) {
$holder = $(this).parent(".instructure_file_link_holder");
}
var showInline = function(id) {
$holder.append($div);
var width = $holder.width();
var flashVars = {};
var params = {
allowScriptAccess: 'always',
allowNetworking: 'all',
allowFullScreen: true,
bgcolor: "#000000",
wmode: 'opaque'
};
var url = "/media_objects/" + id + "/redirect";
var width = Math.min($holder.closest("div,p,table").width() || 550, 550);
var height = width / 550 * 448;
if(mediaType == 'audio') {
height = 125;
width = Math.min(width, 350);
}
swfobject.embedSWF(url, $div.attr('id'), width.toString(), height.toString(), "9.0.0", false, flashVars, params);
}
if(id == 'maybe') {
var detailsUrl = downloadUrl.replace(/\/download.*/, "");
$holder.text("Loading...");
$.ajaxJSON(detailsUrl, 'GET', {}, function(data) {
if(data.attachment && data.attachment.media_entry_id && data.attachment.media_entry_id != 'maybe') {
$holder.text("");
showInline(data.attachment.media_entry_id);
} else {
$holder.text(I18n.t('messages.file_failed_to_load', "This media file failed to load"));
}
}, function() {
$holder.text(I18n.t('messages.file_failed_to_load', "This media file failed to load"));
});
} else {
showInline(id);
}
} else if(command == 'show') {
var width = this.width();
var flashVars = {};
var params = {
allowScriptAccess: 'always',
allowNetworking: 'all',
allowFullScreen: true,
bgcolor: "#000000"
};
var url = "/media_objects/" + id + "/redirect";
var $dialog = $("#media_comment_player_dialog");
if($dialog.length === 0) {
$dialog = $("<div id='media_comment_player_dialog'/>");
$("body").append($dialog);
}
$dialog.dialog('close').dialog({
autoOpen: false,
title: I18n.t('titles.play_comment', "Play Media Comment"),
width: 575,
height: 493,
modal: true,
draggable: false,
wmode: 'opaque'
}).dialog('open');
$dialog.empty();
$dialog.append("<div id='media_comment_play'/>");
$dialog.find("#media_comment_play").html(flashRequiredMessage);
swfobject.embedSWF(url, 'media_comment_play', "550", "448", "9.0.0", false, flashVars, params);
}
return this;
};
var thumbnailsQueued = [];
var thumbnailing = false;
var nextThumbnail = function() {
thumbnailing = true;
for(var idx = 0; idx < 30; idx++) {
var thumbnail = thumbnailsQueued.shift();
if(thumbnail) {
var $elem = thumbnail.elem;
var size = thumbnail.size;
$elem.createMediaCommentThumbnail(thumbnail);
}
}
if(thumbnailsQueued.length > 0) {
setTimeout(nextThumbnail, 500);
} else {
thumbnailing = false;
}
}
$.fn.mediaCommentThumbnail = function(size, keepOriginalText) {
$(this).each(function() {
thumbnailsQueued.push({size: size, elem: $(this), keepOriginalText: keepOriginalText});
});
if(!thumbnailing) {
thumbnailing = true;
setTimeout(nextThumbnail, 500);
}
return this;
}
$.fn.createMediaCommentThumbnail = function(opts) {
if(!INST.kalturaSettings) { console.log('Kaltura has not been enabled for this account'); return; }
var size = opts.size || 'normal';
var only_show_icon = opts.only_show_icon;
var keep_original_text = opts.keepOriginalText;
var dimensions = $.fn.mediaCommentThumbnail.sizes[size] || $.fn.mediaCommentThumbnail.sizes['normal'];
this.each(function() {
var id = $.trim($(this).find(".media_comment_id:first").text());
if(!id && $(this).attr('id') && $(this).attr('id').match(/^media_comment_/)) {
id = $(this).attr('id').substring(14);
}
id = id || $.trim($(this).parent().find(".media_comment_id:first").text());
if(id) {
var url = "http://" + INST.kalturaSettings.resource_domain;
if(location.protocol === 'https:') {
url = "https://" + (INST.kalturaSettings.secure_resource_domain || INST.kalturaSettings.domain);
}
url = url + "/p/" + INST.kalturaSettings.partner_id + "/thumbnail/entry_id/";
url = url + id;
url = url + "/width/" + dimensions.width + "/height/" + dimensions.height + "/bgcolor/000000/type/2/vid_sec/5";
var $img = $("<img/>");
$img.addClass('media_comment_thumbnail');
$img.addClass('media_comment_thumbnail-' + size);
if(only_show_icon) {
$img.attr('src', '/images/media_comment.png');
} else {
$img.attr('src', '/images/blank.png');
$(this).addClass('no-hover').addClass('no-underline');
$img.hover(function() {
$img.attr('src', '/images/play_overlay.png');
}, function() {
$img.attr('src', '/images/blank.png');
});
}
$img.css('backgroundImage', 'url(' + url + ')');
$img.attr('title', I18n.t('titles.click_to_view', 'Click to View'));
var $a = $(this);
if(!keep_original_text) {
$(this).empty();
} else {
var $a = $(this).clone().empty().removeClass('instructure_file_link');
if($(this).parent(".instructure_file_link_holder").length > 0) {
$(this).parent(".instructure_file_link_holder").append($a);
} else {
$(this).after($a);
}
}
$a.addClass('instructure_inline_media_comment');
$a.append($img).css({
backgroundImage: '',
padding: 0
});
$(this).append("<span class='media_comment_id' style='display: none;'>" + id + "</span>");
}
});
return this;
};
$.fn.mediaCommentThumbnail.sizes = {
normal: {width: 140, height: 100},
small: {width: 70, height: 50}
};
$.mediaComment = function(command, arg1, arg2) {
var $container = $("<div/>")
$("body").append($container.hide());
$.fn.mediaComment.apply($container, arguments);
}
$.mediaComment.partnerData = function(params) {
params = params || {};
params.context_code = $.mediaComment.contextCode();
params.root_account_id = parseInt($("#domain_root_account_id").text(), 10) || 0;
return JSON.stringify(params);
}
$.mediaComment.contextCode = function() {
var code = "";
try {
code = $.trim($("#current_context_code").text()) || $.trim("user_" + $("#identity .user_id").text());
} catch(e) { }
return code;
}
var addedEntryIds = {};
$.mediaComment.entryAdded = function(entryId, entryType, title, userTitle) {
if(!entryId || addedEntryIds[entryId]) { return; }
addedEntryIds[entryId] = true;
var entry = {
mediaType: entryType,
entryId: entryId,
title: title,
userTitle: userTitle
}
var context_code = $.mediaComment.contextCode();
if(entry.mediaType == 1 || entry.mediaType == 2 || entry.mediaType == 5 || true) {
var mediaType = 'video';
if(entry.mediaType == 2) {
mediaType = 'image';
} else if(entry.mediaType == 5) {
mediaType = 'audio';
}
if(context_code) {
$.ajaxJSON("/media_objects", "POST", {
id: entry.entryId,
type: mediaType,
context_code: context_code,
title: entry.title,
user_entered_title: entry.userTitle
}, function(data) {
$(document).triggerHandler('media_object_created', data);
}, function(data) {});
}
$("#media_recorder_container").triggerHandler('media_comment_created', {id: entry.entryId, mediaType: mediaType});
}
};
$.mediaComment.audio_delegate = {
readyHandler: function() {
$("#audio_upload")[0].setMediaType('audio');
},
selectHandler: function() {
$.mediaComment.upload_delegate.selectHandler('audio');
},
singleUploadCompleteHandler: function(entries) {
$.mediaComment.upload_delegate.singleUploadCompleteHandler('audio', entries);
},
allUploadsCompleteHandler: function() {
$.mediaComment.upload_delegate.allUploadsCompleteHandler('audio');
},
entriesAddedHandler: function(entries) {
$.mediaComment.upload_delegate.entriesAddedHandler('audio', entries);
},
progressHandler: function(info) {
$.mediaComment.upload_delegate.progressHandler('audio', info[0], info[1], info[2]);
},
uploadErrorHandler: function() {
$.mediaComment.upload_delegate.uploadErrorHandler('audio');
}
};
$.mediaComment.video_delegate = {
readyHandler: function() {
$("#video_upload")[0].setMediaType('video');
},
selectHandler: function() {
$.mediaComment.upload_delegate.selectHandler('video');
},
singleUploadCompleteHandler: function(entries) {
$.mediaComment.upload_delegate.singleUploadCompleteHandler('video', entries);
},
allUploadsCompleteHandler: function() {
$.mediaComment.upload_delegate.allUploadsCompleteHandler('video');
},
entriesAddedHandler: function(entries) {
$.mediaComment.upload_delegate.entriesAddedHandler('video', entries);
},
progressHandler: function(info) {
$.mediaComment.upload_delegate.progressHandler('video', info[0], info[1], info[2]);
},
uploadErrorHandler: function() {
$.mediaComment.upload_delegate.uploadErrorHandler('video');
}
}
$.mediaComment.upload_delegate = {
currentType: 'audio',
submit: function() {
var type = $.mediaComment.upload_delegate.currentType;
var files = $("#" + type + "_upload")[0].getFiles();
if(files.length > 1) {
$("#" + type + "_upload")[0].removeFiles(0, files.length - 2);
}
files = $("#" + type + "_upload")[0].getFiles();
if(files.length == 0) {
return;
}
$("#media_upload_progress").css('visibility', 'visible').progressbar({value: 1});
$("#media_upload_submit").attr('disabled', true).text(I18n.t('messages.submitting', "Submitting Media File..."));
$("#" + type + "_upload")[0].upload();
},
selectHandler: function(type) {
$.mediaComment.upload_delegate.currentType = type;
var files = $("#" + type + "_upload")[0].getFiles();
if(files.length > 1) {
$("#" + type + "_upload")[0].removeFiles(0, files.length - 2);
}
var file = $("#" + type + "_upload")[0].getFiles()[0];
$("#media_upload_settings .icon").attr('src', '/images/file-' + type + '.png');
$("#media_upload_submit").show();
$("#media_upload_submit").attr('disabled', file ? false : true)
$("#media_upload_settings").css('visibility', file ? 'visible' : 'hidden');
$("#media_upload_title").val(file.title);
$("#media_upload_display_title").text(file.title);
$("#media_upload_file_size").text($.fileSize(file.bytesTotal));
$("#media_upload_feedback_text").html("");
$("#media_upload_feedback").css('visibility', 'hidden');
if (file.bytesTotal > INST.kalturaSettings.max_file_size_bytes) {
$("#media_upload_feedback_text").html(I18n.t('errors.file_too_large', "*This file is too large.* The maximum size is %{size}MB.", { size: INST.kalturaSettings.max_file_size_bytes / 1048576, wrapper: '<b>$1</b>' }));
$("#media_upload_feedback").css('visibility', 'visible');
$("#media_upload_submit").hide();
return;
}
// Currently there is a known problem with the
// KUpload widget, where unless you submit the uploaded
// file as part of the select callback, the flash widget
// has some sort of access control problem. When this is
// fixed we can uncomment this line and remove the one
// after it.
// $("#media_upload_title").focus().select();
$("#media_upload_submit").click();
},
singleUploadCompleteHandler: function(type, entries) {
$("#media_upload_progress").progressbar('option', 'value', 100);
},
allUploadsCompleteHandler: function(type) {
$("#media_upload_progress").progressbar('option', 'value', 100);
$("#" + type + "_upload")[0].addEntries();
},
entriesAddedHandler: function(type, entries) {
$("#media_upload_progress").progressbar('option', 'value', 100);
var entry = entries[0];
$("#media_upload_submit").text(I18n.t('messages.submitted', "Submitted Media File!"));
setTimeout(function() {
$("#media_comment_dialog").dialog('close');
}, 1500);
if(type == 'audio') {
entry.entryType = 5;
} else if(type == 'video') {
entry.entryType = 1;
}
$.mediaComment.entryAdded(entry.entryId, entry.entryType, entry.title);
},
progressHandler: function(type, loaded_bytes, total_bytes, entry) {
var pct = 100.0 * loaded_bytes / total_bytes;
$("#media_upload_progress").progressbar('option', 'value', pct);
},
uploadErrorHandler: function(type) {
var error = $("#" + type + "_upload")[0].getError();
$("#media_upload_errors").text(I18n.t('errors.upload_failed', "Upload failed with error:") + " " + error);
$("#media_upload_progress").hide();
}
}
var reset_selectors = false;
var lastInit = null;
$.mediaComment.init = function(media_type, opts) {
lastInit = lastInit || new Date();
media_type = media_type || "any";
opts = opts || {};
var user_name = $.trim($("#identity .user_name").text() || "");
if(user_name) {
user_name = user_name + ": " + (new Date()).toString("ddd MMM d, yyyy");
}
var defaultTitle = opts.defaultTitle || user_name || I18n.t('titles.media_contribution', "Media Contribution");
var mediaCommentReady = function() {
$("#video_record_title,#audio_record_title").val(defaultTitle);
$dialog.dialog('close').dialog({
autoOpen: false,
title: I18n.t('titles.record_upload_media_comment', "Record/Upload Media Comment"),
width: 560,
height: 460,
modal: (opts.modal == false ? false : true)
}).dialog('open');
$dialog.dialog('option', 'close', function() {
$("#audio_record").before("<div id='audio_record'/>").remove();
$("#video_record").before("<div id='video_record'/>").remove();
if(opts && opts.close && $.isFunction(opts.close)) {
opts.close.call($dialog);
}
});
$("#audio_record").before("<div id='audio_record'/>").remove();
$("#video_record").before("<div id='video_record'/>").remove();
var ks = $dialog.data('ks');
if(media_type == "video") {
$("#video_record_option").click();
$("#media_record_option_holder").hide();
$("#audio_upload_holder").hide();
$("#video_upload_holder").show();
} else if(media_type == "audio") {
$("#audio_record_option").click();
$("#media_record_option_holder").hide();
$("#audio_upload_holder").show();
$("#video_upload_holder").hide();
} else {
$("#video_record_option").click();
$("#audio_upload_holder").show();
$("#video_upload_holder").show();
}
// re-set the state on everything. Basically just clear the uploader
// files list, remove the uploader progress bar and re-set the submit button.
// Re-set the recorders, too? I guess probably, yeah, if you can.
$(document).triggerHandler('reset_media_comment_forms');
var temporaryName = $.trim($("#identity .user_name").text()) + " " + (new Date()).toISOString();
setTimeout(function() {
var recordVars = {
host:location.protocol + "//" + INST.kalturaSettings.domain,
rtmpHost:"rtmp://" + INST.kalturaSettings.domain,
kshowId:"-1",
pid:INST.kalturaSettings.partner_id,
subpid:INST.kalturaSettings.subpartner_id,
uid:$dialog.data('uid') || "ANONYMOUS",
ks:ks,
themeUrl:"/media_record/skin.swf",
localeUrl:"/media_record/locale.xml",
thumbOffset:"1",
licenseType:"CC-0.1",
showUi:"true",
useCamera:"0",
maxFileSize: INST.kalturaSettings.max_file_size_bytes / 1048576,
maxUploads: 1,
partnerData: $.mediaComment.partnerData(),
partner_data: $.mediaComment.partnerData(),
entryName:temporaryName
}
var params = {
"align": "middle",
"quality": "high",
"bgcolor": "#ffffff",
"name": "KRecordAudio",
"allowScriptAccess":"sameDomain",
"type": "application/x-shockwave-flash",
"pluginspage": "http://www.adobe.com/go/getflashplayer",
"wmode": "opaque"
}
$("#audio_record").text(I18n.t('messages.flash_required_record_audio', "Flash required for recording audio."))
swfobject.embedSWF("/media_record/KRecord.swf", "audio_record", "400", "300", "9.0.0", false, recordVars, params);
var params = $.extend({}, params, {name: 'KRecordVideo'});
var recordVars = $.extend({}, recordVars, {useCamera: '1'});
$("#video_record").html("Flash required for recording video.")
swfobject.embedSWF("/media_record/KRecord.swf", "video_record", "400", "300", "9.0.0", false, recordVars, params);
// give the dialog time to initialize or the recorder will
// render funky in ie
}, INST.browser.ie ? 500 : 10);
var flashVars = {
host:location.protocol + "//" + INST.kalturaSettings.domain,
partnerId:INST.kalturaSettings.partner_id,
subPId:INST.kalturaSettings.subpartner_id,
uid:$dialog.data('uid') || "ANONYMOUS",
entryId: "-1",
ks:ks,
thumbOffset:"1",
licenseType:"CC-0.1",
maxFileSize: INST.kalturaSettings.max_file_size_bytes / 1048576,
maxUploads: 1,
uiConfId: INST.kalturaSettings.upload_ui_conf,
jsDelegate: "$.mediaComment.audio_delegate"
}
var params = {
"align": "middle",
"quality": "high",
"bgcolor": "#ffffff",
"name": "KUpload",
"allowScriptAccess":"always",
"type": "application/x-shockwave-flash",
"pluginspage": "http://www.adobe.com/go/getflashplayer",
"wmode": "transparent"
}
$("#audio_upload").text(I18n.t('messages.flash_required_upload_audio', "Flash required for uploading audio."));
var width = "180";
var height = "50";
swfobject.embedSWF("//" + INST.kalturaSettings.domain + "/kupload/ui_conf_id/" + INST.kalturaSettings.upload_ui_conf, "audio_upload", width, height, "9.0.0", false, flashVars, params)
flashVars = $.extend({}, flashVars, {jsDelegate: '$.mediaComment.video_delegate'});
$("#video_upload").text(I18n.t('messages.flash_required_upload_video', "Flash required for uploading video."));
var width = "180";
var height = "50";
swfobject.embedSWF("//" + INST.kalturaSettings.domain + "/kupload/ui_conf_id/" + INST.kalturaSettings.upload_ui_conf, "video_upload", width, height, "9.0.0", false, flashVars, params)
var $audio_record_holder, $audio_record, $audio_record_meter;
var audio_record_counter, current_audio_level, audio_has_volume;
var $video_record_holder, $video_record, $video_record_meter;
var video_record_counter, current_video_level, video_has_volume = false;
reset_selectors = true;
setInterval(function() {
if(reset_selectors) {
$audio_record_holder = $("#audio_record_holder");
$audio_record = $("#audio_record");
$audio_record_meter = $("#audio_record_meter");
audio_record_counter = 0;
current_audio_level = 0;
$video_record_holder = $("#video_record_holder");
$video_record = $("#video_record");
$video_record_meter = $("#video_record_meter");
video_record_counter = 0;
current_video_level = 0;
reset_selectors = false;
}
audio_record_counter++;
video_record_counter++;
var audio_level = null, video_level = null;
if($audio_record && $audio_record[0] && $audio_record[0].getMicophoneActivityLevel && $audio_record.parent().length) {
audio_level = $audio_record[0].getMicophoneActivityLevel();
} else {
$audio_record = $("#audio_record");
}
if($video_record && $video_record[0] && $video_record[0].getMicophoneActivityLevel && $video_record.parent().length) {
video_level = $video_record[0].getMicophoneActivityLevel();
} else {
$video_record = $("#video_record");
}
if(audio_level != null) {
audio_level = Math.max(audio_level, current_audio_level);
if(audio_level > -1 && !$audio_record_holder.hasClass('with_volume')) {
$audio_record_meter.css('display', 'none');
$("#audio_record_holder").addClass('with_volume').animate({'width': 420}, function() {
$audio_record_meter.css('display', '');
});
}
if(audio_record_counter > 4) {
current_audio_level = 0;
audio_record_counter = 0;
var band = (audio_level - (audio_level % 10)) / 10;
$audio_record_meter.attr('class', 'volume_meter band_' + band);
} else {
current_audio_level = audio_level;
}
}
if(video_level != null) {
video_level = Math.max(video_level, current_video_level);
if(video_level > -1 && !$video_record_holder.hasClass('with_volume')) {
$video_record_meter.css('display', 'none');
$("#video_record_holder").addClass('with_volume').animate({'width': 420}, function() {
$video_record_meter.css('display', '');
});
}
if(video_record_counter > 4) {
current_video_level = 0;
video_record_counter = 0;
var band = (video_level - (video_level % 10)) / 10;
$video_record_meter.attr('class', 'volume_meter band_' + band);
} else {
current_video_level = video_level;
}
}
}, 20);
}
var now = new Date();
if((now - lastInit) > 300000) {
$("#media_comment_dialog").dialog('close').remove();
}
lastInit = now;
var $dialog = $("#media_comment_dialog");
if($dialog.length == 0) {
var $div = $("<div/>").attr('id', 'media_comment_dialog');
$div.text(I18n.t('messages.loading', "Loading..."));
$div.dialog('close').dialog({
autoOpen: false,
title: I18n.t('titles.record_upload_media_comment', "Record/Upload Media Comment"),
resizable: false,
width: 470,
height: 300
}).dialog('open');
$.ajaxJSON('/dashboard/comment_session', 'GET', {}, function(data) {
$div.data('ks', data.ks);
$div.data('uid', data.uid);
}, function(data) {
if(data.logged_in == false) {
$div.data('ks-error', I18n.t('errors.must_be_logged_in', "You must be logged in to record media."));
} else {
$div.data('ks-error', I18n.t('errors.load_failed', "Media Comment Application failed to load. Please try again."));
}
});
$.get("/partials/_media_comments.html", function(html) {
var checkForKS = function() {
if($div.data('ks')) {
$div.html(html);
$div.find("#media_record_tabs").tabs({
select: function() {
$(document).triggerHandler('reset_media_comment_forms');
}
});
mediaCommentReady();
} else if($div.data('ks-error')) {
$div.html($div.data('ks-error'));
} else {
setTimeout(checkForKS, 500);
}
}
checkForKS();
$dialog = $("#media_comment_dialog");
});
$dialog = $div;
} else {
mediaCommentReady();
}
}
$(document).ready(function() {
$(document).bind('reset_media_comment_forms', function() {
$("#audio_record_holder_message,#video_record_holder_message").removeClass('saving')
.find(".recorder_message").html("Saving Recording...<img src='/images/media-saving.gif'/>");
$("#audio_record_holder").stop(true, true).clearQueue().css('width', '').removeClass('with_volume');
$("#video_record_holder").stop(true, true).clearQueue().css('width', '').removeClass('with_volume');
$("#media_upload_submit").text(I18n.t('buttons.submit', "Submit Media File")).attr('disabled', true);
$("#media_upload_settings").css('visibility', 'hidden');
$("#media_upload_progress").css('visibility', 'hidden').progressbar().progressbar('option', 'value', 1);
$("#media_upload_title").val("");
var files = $("#audio_upload")[0] && $("#audio_upload")[0].getFiles && $("#audio_upload")[0].getFiles();
if(files && $("#audio_upload")[0].removeFiles && files.length > 0) {
$("#audio_upload")[0].removeFiles(0, files.length - 1);
}
files = $("#video_upload")[0] && $("#video_upload")[0].getFiles && $("#video_upload")[0].getFiles();
if(files && $("#video_upload")[0].removeFiles && files.length > 0) {
$("#video_upload")[0].removeFiles(0, files.length - 1);
}
});
$("#media_upload_submit").live('click', function(event) {
$.mediaComment.upload_delegate.submit();
});
$("#video_record_option,#audio_record_option").live('click', function(event) {
event.preventDefault();
$("#video_record_option,#audio_record_option").removeClass('selected_option');
$(this).addClass('selected_option');
$("#audio_record_holder").stop(true, true).clearQueue().css('width', '').removeClass('with_volume');
$("#video_record_holder").stop(true, true).clearQueue().css('width', '').removeClass('with_volume');
if($(this).attr('id') == 'audio_record_option') {
$("#video_record_holder_holder").hide();
$("#audio_record_holder_holder").show();
} else {
$("#video_record_holder_holder").show();
$("#audio_record_holder_holder").hide();
}
});
});
$(document).bind('media_recording_error', function() {
$("#audio_record_holder_message,#video_record_holder_message").find(".recorder_message").html(
$.h(I18n.t('errors.save_failed', "Saving appears to have failed. Please close this popup to try again.")) +
"<div style='font-size: 0.8em; margin-top: 20px;'>" +
$.h(I18n.t('errors.persistent_problem', "If this problem keeps happening, you may want to try recording your media locally and then uploading the saved file instead.")) +
"</div>");
});
})(jQuery, INST);
window.mediaCommentCallback = function(results) {
var context_code = $.trim($("#current_context_code").text()) || $.trim("user_" + $("#identity .user_id").text());
for(var idx in results) {
var entry = results[idx];
if(entry.mediaType == 1 || entry.mediaType == 2 || entry.mediaType == 5 || true) {
var mediaType = 'video';
if(entry.mediaType == 2) {
mediaType = 'image';
} else if(entry.mediaType == 5) {
mediaType = 'audio';
}
if(context_code) {
$.ajaxJSON("/media_objects", "POST", {
id: entry.entryId,
type: mediaType,
context_code: context_code,
title: entry.name
}, function(data) {
$(document).triggerHandler('media_object_created', data);
}, function(data) {});
}
$("#media_recorder_container").triggerHandler('media_comment_created', {id: entry.entryId, mediaType: mediaType});
}
}
$("#media_comment_create_dialog").empty().dialog('close');
}
window.beforeAddEntry = function() {
var attemptId = Math.random();
$.mediaComment.lastAddAttemptId = attemptId;
setTimeout(function() {
if($.mediaComment.lastAddAttemptId == attemptId) {
$(document).triggerHandler('media_recording_error');
}
}, 30000);
$("#audio_record_holder_message,#video_record_holder_message").addClass('saving');
}
window.addEntryFail = function() {
$(document).triggerHandler('media_recording_error');
}
window.addEntryFailed = function() {
$(document).triggerHandler('media_recording_error');
}
window.addEntryComplete = function(entries) {
$.mediaComment.lastAddAttemptId = null;
$("#audio_record_holder_message,#video_record_holder_message").removeClass('saving');
try {
var userTitle = null;
if(!$.isArray(entries)) {
entries = [entries];
}
for(var idx = 0; idx < entries.length; idx++) {
var entry = entries[idx];
if($("#media_record_tabs").tabs('option', 'selected') == 0) {
userTitle = $("#video_record_title,#audio_record_title").filter(":visible:first").val();
} else if($("#media_record_tabs").tabs('option', 'selected') == 1) {
}
if(entry.entryType == 1 && $("#audio_record_option").hasClass('selected_option')) {
entry.entryType = 5;
}
$.mediaComment.entryAdded(entry.entryId, entry.entryType, entry.entryName, userTitle);
$("#media_comment_dialog").dialog('close');
}
} catch(e) {
console.log(e);
alert(I18n.t('errors.save_failed_try_again', "Entry failed to save. Please try again."));
}
}
});