var PODLOVE = PODLOVE || {}; (function($){ var AuphonicWebhookAuthkey = Math.random().toString(36).substring(5); /** * Adds loading indicator to a button. * * Expects the following HTML: * * * * * * * * * Usage: * * $("#my_button").button_with_loading_indicator(); * $("#my_button").trigger('start'); * $("#my_button").trigger('stop'); */ $.fn.button_with_loading_indicator = function(options) { return this.each(function() { var $button = $(this), $htmlButton = $button.closest("button"), $idle = $button.find(".state_idle"), $working = $button.find(".state_working"), $fail = $button.find(".state_fail"), $success = $button.find(".state_success"); var start = function() { $idle.hide(); $working.show(); $htmlButton.attr('disabled', 'disabled'); }; var stop = function() { $working.hide(); $success.show().delay(750).fadeOut(200); $idle.delay(750).fadeIn(200); $htmlButton.removeAttr('disabled'); }; var fail = function() { $working.hide(); $fail.show().delay(750).fadeOut(200); $idle.delay(750).fadeIn(200); $htmlButton.removeAttr('disabled'); } $button.bind('start', start); $button.bind('stop', stop); $button.bind('fail', fail); }); }; function update_production_warning(message) { $status = $("#auphonic-production-warning"); svg = '
' if (!message) { $status.hide(); return; } $status.html(svg + "
" + message + "
"); $status.show(); } function update_production_status(text, number) { var css_classes = "status-progress status-ok status-info status-error", $status = $("#auphonic-production-status"); $status.html(text); $status.removeClass(css_classes); switch (number) { case 0: // "0": "File Upload", case 1: // "1": "Waiting", case 4: // "4": "Audio Processing", case 5: // "5": "Audio Encoding", case 6: // "6": "Outgoing File Transfer", case 7: // "7": "Audio Mono Mixdown", case 8: // "8": "Splitting Audio On Chapter Marks", case 12: // "12": "Incoming File Transfer", case 13: // "13": "Stopping the Production" $status.addClass('status-progress'); break; case 3: // "3": "Done", $status.addClass('status-ok'); break; case 9: // "9": "Incomplete Form", case 10: // "10": "Production Not Started Yet", case 11: // "11": "Production Outdated", $status.addClass('status-info'); break; case 2: // "2": "Error", $status.addClass('status-error'); break; } } PODLOVE.AuphonicPresetFetcher = function () { function getPresetForShow(showSlug) { const params = new URLSearchParams({ showSlug: showSlug, episodeId: podlove_vue.episode_id, action: 'podlove-get-auphonic-preset' }); fetch(ajaxurl + '?' + params.toString()) .then((response) => response.json()) .then((data) => { let preset = {key: data.preset_key, name: data.preset_name}; // update "data store" $("#auphonic").data('presetuuid', preset.key) }); } function initPresetFetching() { const showWidget = document.getElementById("showschecklist") if (!showWidget) { return; } const items = showWidget.querySelectorAll('li input'); const currentItem = showWidget.querySelector('li input:checked') for (const item of items) { item.addEventListener('click', (e) => { const input = item; getPresetForShow(input.value) }) } if (currentItem) { getPresetForShow(currentItem.value) } } if (document.readyState !== 'loading') { initPresetFetching(); } else { document.addEventListener('DOMContentLoaded', initPresetFetching); } }; PODLOVE.AuphonicImport = function () { var statusTimeoutId; function get_chapters_string_from_data (production) { var chapters_entry = ""; var chapters = production.chapters.sort(function(a, b) { return a.start_sec - b.start_sec; }); $.each(chapters, function(index, value) { chapters_entry = chapters_entry + value.start_output + " " + value.title; if (value.url == "") { } else { chapters_entry = chapters_entry + " <" + value.url + ">"; } chapters_entry = chapters_entry + '\n'; }); return chapters_entry; } function get_result_fields(production) { return [ { field: '#_podlove_meta_duration', value: production.length_timestring }, { field: '#_podlove_meta_slug' , value: production.output_basename } ]; } function get_metadata_fields(production, chapter_asset_assignment) { var fields = [ { field: '#title' , value: production.metadata.title }, { field: '#_podlove_meta_subtitle' , value: production.metadata.subtitle }, { field: '#_podlove_meta_summary' , value: production.metadata.summary }, { field: '#new-tag-post_tag' , value: production.metadata.tags.join(" , ") }, { field: '#_podlove_meta_license_name' , value: production.metadata.license }, { field: '#_podlove_meta_license_url' , value: production.metadata.license_url }, { field: '#_podlove_meta_cover_art' , value: production.image } ]; if (chapter_asset_assignment == 'manual') { fields.push({ field: '#_podlove_meta_chapters', value: get_chapters_string_from_data(production) }); } return fields; } /** * Import and override existing fields. */ function do_force_import(fields) { $.each(fields, function (index, field) { if (field.field == '#_podlove_meta_chapters') { try { window.chaptersApp.$children[0].doImportChapters(field.value); } catch (e) { console.log("Could not import chapters from Auphonic", e); } } else { $(field.field).val(field.value); } }); } /** * Import but do not override existing fields. */ function do_simple_import(fields) { $.each(fields, function (index, field) { if ($(field.field).val() == "") { $(field.field).val(field.value); } }); } function import_production_results(e, production) { do_force_import(get_result_fields(production)); $.publish("/auphonic/production/status/results_imported", [production]); } function fetch_auphonic_production_status(production_uuid) { var api_url = "https://auphonic.com/api/production/{uuid}.json".replace("{uuid}",production_uuid), production; window.clearTimeout(statusTimeoutId); // in case there are multiple running $.getJSON(api_url, { bearer_token: PODLOVE.Auphonic.get_token() }, function(data) { if (data && data.status_code == 200) { production = data.data; update_production_status(production.status_string, production.status); update_production_warning(production.warning_message); if (production.status_string === "Done") { $("#start_auphonic_production_button, #stop_auphonic_production_button").toggle(); $.publish("/auphonic/production/status/done", [production]); } else { statusTimeoutId = window.setTimeout(function() { fetch_auphonic_production_status(production_uuid); }, 5000); } } }); } /** * Extract Auphonic relevant data from WordPress web form. * * @param {string} mode "init" or "update". Default: "init". Update ignores presets and output files. * * @return json In the correct format for the Auphonic API. */ function extract_auphonic_data_from_form(mode) { mode = typeof mode !== 'undefined' ? mode : 'init'; var presetuuid = $("#auphonic").data('presetuuid'), chapter_asset_assignment = $("#auphonic").data('assignment-chapter'), cover_art_url = $("#auphonic").data('episode-image') || ($("#auphonic").data('assignment-image') == 'post-thumbnail' && $('#set-post-thumbnail > img').attr('src')), podcast_cover_art_url = $("#auphonic").data("podcast-image"), site_url = $("#auphonic").data('site-url'), raw_chapters = $("#_podlove_meta_chapters").val(), chapters = [], data = {}; data.metadata = {}; if (mode === "init") { if(typeof presetuuid !== undefined && presetuuid !== "") { data.preset = presetuuid; } else { // no preset? add some output files data.output_files = [ {"format":"aac", "bitrate":"128", "ending":"m4a"}, {"format":"mp3", "bitrate":"128", "ending":"mp3"}, {"format":"opus", "bitrate":"96", "ending":"opus"} ] } } var service = $("#auphonic_services").val(), input_file = $("#auphonic_production_files").val(), input_url = $("#auphonic_http_upload_url").val(), tags_raw = $(".the-tags").val() ; if (service === "url") { data.input_file = input_url; } else if (service == "file") { // do nothing } else { data.service = service; data.input_file = input_file; } data.length_timestring = $("#_podlove_meta_duration").val(); data.output_basename = $("#_podlove_meta_slug").val(); data.metadata.title = $("#_podlove_meta_title").val() || $("#title").val(); data.metadata.subtitle = $("#_podlove_meta_subtitle").val(); data.metadata.track = parseInt($("#_podlove_meta_number").val(), 10); data.metadata.summary = $("#_podlove_meta_summary").val(); data.metadata.year = $("#aa").val() || (new Date()).getFullYear(); data.metadata.license = $("#_podlove_meta_license_name").val(); data.metadata.license_url = $("#_podlove_meta_license_url").val(); data.webhook = site_url + "/?podlove-auphonic-production=" + $("#post_ID").val() + "&authkey=" + AuphonicWebhookAuthkey; data.image = $("#_podlove_meta_cover_art").val() || cover_art_url || podcast_cover_art_url; if (tags_raw) { data.metadata.tags = tags_raw.split(',').concat($("#new-tag-post_tag").val().split(',')); } else { data.metadata.tags = []; } if(typeof chapter_asset_assignment !== 'undefined') { if (chapter_asset_assignment == 'manual' && raw_chapters !== "") { // todo: replace with https://www.npmjs.com/package/podcast-chapter-parser-mp4chaps $(raw_chapters.split('\n')).each(function (index, value) { if(value !== "\n" && value !== "") { var chapter = new Object(); chapter.start = value.substring(0, value.indexOf(" ")); if(value.indexOf("<") == -1) { chapter.title = value.substring(value.indexOf(" ") + 1, value.length); chapter.url = ""; } else { chapter.title = value.substring(value.indexOf(" ") + 1, value.lastIndexOf(" ")); chapter.url = value.substring(value.lastIndexOf(" "), value.length).substring(2, value.substring(value.lastIndexOf(" "), value.length).length - 1); } chapters[index] = chapter; delete chapter; } }); data.chapters = chapters; } } return data; } function update_auphonic_production(production_uuid, callback) { // Delete chapters before adding them again (avoid doubling of chapters) var url = 'https://auphonic.com/api/production/{uuid}/chapters.json', production_uuid = $("#auphonic_productions option:selected").val(); var xhr = PODLOVE.Auphonic.createCORSRequest("DELETE", url.replace("{uuid}", production_uuid)); xhr.setRequestHeader("Content-type","application/json"); xhr.setRequestHeader("Authorization","Bearer " + PODLOVE.Auphonic.get_token()); xhr.onloadend = function() { // Once chapters are deleted update the auphonic production var url = 'https://auphonic.com/api/production/{uuid}.json' data = extract_auphonic_data_from_form("update"); var xhr = PODLOVE.Auphonic.createCORSRequest("POST", url.replace("{uuid}", production_uuid)); xhr.setRequestHeader("Content-type","application/json"); xhr.setRequestHeader("Authorization","Bearer " + PODLOVE.Auphonic.get_token()); xhr.onload = function(e) { callback(); }; xhr.send(JSON.stringify(data)); }; xhr.send(); } function stop_auphonic_production() { var url = 'https://auphonic.com/api/production/{uuid}/stop.json', production_uuid = $("#auphonic_productions option:selected").val(); var xhr = PODLOVE.Auphonic.createCORSRequest("POST", url.replace("{uuid}", production_uuid)); xhr.setRequestHeader("Content-type","application/json"); xhr.setRequestHeader("Authorization","Bearer " + PODLOVE.Auphonic.get_token()); xhr.onload = function(e) { fetch_auphonic_production_status(production_uuid); }; xhr.send(); } function start_auphonic_production() { var url = 'https://auphonic.com/api/production/{uuid}/start.json', production_uuid = $("#auphonic_productions option:selected").val(); var xhr = PODLOVE.Auphonic.createCORSRequest("POST", url.replace("{uuid}", production_uuid)); xhr.setRequestHeader("Content-type","application/json"); xhr.setRequestHeader("Authorization","Bearer " + PODLOVE.Auphonic.get_token()); xhr.onload = function(e) { fetch_auphonic_production_status(production_uuid); }; xhr.send(); } /** * Create Auphonic production. */ function create_auphonic_production() { $button = $("#create_auphonic_production_button span").button_with_loading_indicator(); $button.trigger('start'); var fail = function() { $button.trigger('fail'); console.warn("Auphonic Production Creation failed. If you are sending images but the image is not publicly available, that might be the reason."); } $.publish('/auphonic/createproduction/before'); $.ajax({ dataType: "json", url: ajaxurl, data: { action: 'podlove-podcast' }, success: function(publisher_podcast) { var auphonic_production_data = extract_auphonic_data_from_form(); auphonic_production_data.metadata.publisher = publisher_podcast.publisher_name; auphonic_production_data.metadata.url = publisher_podcast.publisher_url; auphonic_production_data.metadata.license = publisher_podcast.license_name; auphonic_production_data.metadata.license_url = publisher_podcast.license_url; axios .post("https://auphonic.com/api/productions.json", auphonic_production_data, { headers: { 'Authorization': 'Bearer ' + PODLOVE.Auphonic.get_token(), 'Content-type': 'application/json' } }) .then(function (response) { var production = response.data.data, file = document.querySelector('#auphonic_local_upload_url').files[0]; $.publish('/auphonic/createproduction/success', [production]); if ($("#auphonic_services").val() == "file" && file) { $.publish('/auphonic/fileupload', [production, $button] ); } else { $button.trigger('stop'); $.publish('/auphonic/createproduction/done', [production]); } }) .catch(function (error) { console.log("Auphonic Error when creating production:", error); fail() }) } }); } /** * Fetch data from the production and put it into the episode. * * @param string import_mode Set to "metadata" to override all data from production result. * Otherwise set to production results only. */ function fetch_production_data(button, import_mode) { var uuid = $("#auphonic_productions option:selected").val(), chapter_asset_assignment = $("#auphonic").data("assignment-chapter") $button = $(" > span", button).button_with_loading_indicator(); $button.trigger('start'); var url = 'https://auphonic.com/api/production/{uuid}.json?bearer_token={token}' .replace('{uuid}', uuid) .replace('{token}', PODLOVE.Auphonic.get_token()); $.getJSON(url, function(data) { if (data && data.data) { // hide prompt label which usually is placed above the title field $('#title-prompt-text').addClass('screen-reader-text'); do_force_import(get_result_fields(data.data)); if (import_mode === 'metadata') { do_force_import(get_metadata_fields(data.data, chapter_asset_assignment)); } // activate all assets if no asset is active if ($(".media_file_row input[type=checkbox]:checked").length === 0) { $(".media_file_row input[type=checkbox]:not(:checked)").click(); } } }).fail(function() { $button.trigger('fail'); }).done(function() { $button.trigger('stop'); }); } function fetch_files_for_current_service() { var uuid = $("#auphonic_services").val(), api_url = "https://auphonic.com/api/service/{uuid}/ls.json".replace("{uuid}",uuid), $files = $("#auphonic_production_files"), $button = $("#fetch_auphonic_production_files").button_with_loading_indicator(); if (uuid == "url") { $("#auphonic_http_upload_url").show(); $("#auphonic_production_files, #auphonic_local_upload_url").hide(); } else if (uuid == "file") { $("#auphonic_local_upload_url").show(); $("#auphonic_production_files, #auphonic_http_upload_url").hide(); } else { $("#auphonic_http_upload_url, #auphonic_local_upload_url").hide(); $("#auphonic_production_files").show(); $button.trigger('start'); $.getJSON(api_url, { bearer_token: PODLOVE.Auphonic.get_token() }, function(data) { if (data && data.status_code == 200) { $files.empty(); $.each(data.data, function(index, file) { $files.append(""); }); } }).fail(function() { $button.trigger('fail'); $files.empty().append(""); }).done(function() { $button.trigger('stop'); }); } } function fetch_incoming_services() { var api_url = "https://auphonic.com/api/services.json", $services = $("#auphonic_services"); $services.empty(); $services.append('') $services.append('') $.getJSON(api_url, { bearer_token: PODLOVE.Auphonic.get_token() }, function(data) { if (data.status_code == 200) { $.each(data.data, function(index, service) { if (service.incoming) { $services.append(""); } }); fetch_files_for_current_service(); } }).fail(function() { $services.empty().append(""); }).done(function() { // console.log("fetch service: succeeded"); }); } function fetch_processing_time() { var api_url = "https://auphonic.com/api/user.json", $credits = $("#auphonic-credits"), $credits_container = $("#auphonic-credits-status"); $.getJSON(api_url, { bearer_token: PODLOVE.Auphonic.get_token() }, function(data) { if (data.status_code == 200) { var hours = parseInt(data.data.credits, 10), minutes = parseInt((data.data.credits - hours) * 60, 10), status = hours + "h" + (minutes ? (" " + minutes + "m") : ""); $credits.html(status); $credits_container.show(); } }).fail(function() { $credits_container.hide(); }); } function fetch_flag() { if ( $("#auphonic_publish_after_finishing").is(":checked") ) { return 'publish'; } else { return 'update'; } } /** * Start an Auphonic production process. * * - handle button states * - update production with current episode data * - start the actual production */ function do_auphonic_production() { $("#start_auphonic_production_button, #stop_auphonic_production_button").toggle(); update_auphonic_production($("#auphonic_productions option:selected").val(), function(){ start_auphonic_production(); }); } if ($("#auphonic").length) { // automatically import production results when production is done $.subscribe("/auphonic/production/status/done", import_production_results); // Automatically publish after results are imported (if flag is set). // Wait a second in case stuff is still going on after the results // were imported — like media file checking. $.subscribe("/auphonic/production/status/results_imported", function(e, production) { if ($("#start_auphonic_production_button").is(":checked")) { setTimeout(function() { $("#publish").click(); }, 1000); } }); $.subscribe('/auphonic/createdproduction/added', function(e, production) { if ($("#auphonic_start_after_creation").is(":checked")) { do_auphonic_production(); } }); var register_auphonic_webhook = function(e) { $.ajax({ url: ajaxurl, data: { action: "podlove-add-production-for-auphonic-webhook", flag: fetch_flag(), authkey: AuphonicWebhookAuthkey, post_id: $("#post_ID").val() }, dataType: 'json' }); }; // Create Auphonic webhook events for publishing and saving $("#start_auphonic_production_button").on('click', register_auphonic_webhook); $("#auphonic_productions").chosen({ width: "50%", search_contains: true }); $("#auphonic_productions").change(function(e) { var $production = $("option:selected", this), production = $production.data(); if ($production.val() !== "0") { // remove "choose production" option $("#auphonic_productions option[value=0]").remove(); // update "chosen" $("#auphonic_productions").trigger("chosen:updated"); $("#_auphonic_production").val($production.val()); update_production_status(production.status, production.status_number); update_production_warning(production.warning_message); $("#auphonic-selected-production button").attr("disabled", false); $("#open_production_button").attr("disabled", false); } else { $("#auphonic-selected-production").attr("disabled", true); $("#open_production_button").attr("disabled", true); } }); $("#fetch_production_data_button").click(function (e) { e.preventDefault(); fetch_production_data($(this), 'metadata'); }); $("#fetch_production_results_button").click(function (e) { e.preventDefault(); fetch_production_data($(this), 'results'); }); $("#create_auphonic_production_button").click(function (e) { e.preventDefault(); create_auphonic_production(); }); $("#start_auphonic_production_button").click(function(e) { e.preventDefault(); do_auphonic_production(); }); $("#stop_auphonic_production_button").click(function(e) { e.preventDefault(); $("#start_auphonic_production_button, #stop_auphonic_production_button").toggle(); stop_auphonic_production(); }); $("#open_production_button").click(function (e) { e.preventDefault(); window.open('https://auphonic.com/engine/upload/edit/' + $("#auphonic_productions").find(":selected").val()); }); $("#fetch_auphonic_production_files").click(function(){ fetch_files_for_current_service(); }); $("#auphonic_services").change(function(){ fetch_files_for_current_service(); }); $(document).ready(function() { fetch_incoming_services(); fetch_processing_time(); }); } } /** * Starting below are tidy logic-modules. * Above is "JS Spaghetti Blurb" that works but should be modularized, too. */ /** * Auphonic Helper Methods */ PODLOVE.Auphonic = (function(){ return { get_token: function() { return $("#auphonic").data('api-key'); }, createCORSRequest: function(method, url) { var xhr = new XMLHttpRequest(); if ("withCredentials" in xhr) { xhr.open(method, url, true); // XHR for Chrome/Firefox/Opera/Safari } else if (typeof XDomainRequest != "undefined") { xhr = new XDomainRequest(); // XDomainRequest for IE xhr.open(method, url); } else { xhr = null; // CORS not supported } return xhr; }, pad_number: function (n, p, c) { var pad_char = typeof c !== 'undefined' ? c : '0'; var pad = new Array(1 + p).join(pad_char); return (pad + n).slice(-pad.length); }, refresh_preset_list: function( that ) { var data = { action: 'podlove-refresh-auphonic-presets' }; var selected_preset = $("#podlove_module_auphonic_auphonic_production_preset").val(); $(that).html(''); $.ajax({ url: ajaxurl, data: data, dataType: 'json', success: function(result) { $("#podlove_module_auphonic_auphonic_production_preset").children( 'option:not(:first)' ).remove(); $.each( result.data, function( index, value) { $("#podlove_module_auphonic_auphonic_production_preset").append(""); }); $("#podlove_module_auphonic_auphonic_production_preset").val( selected_preset ); $(that).html(''); } }); } } }()); /** * Auphonic Production Fethcer * * This module fills the list of available productions. * It ensures it's always up to date. */ PODLOVE.AuphonicProductionFetcher = (function(){ var $productions, $button, url; var init = function() { $(document).ready(function () { $productions = $("#auphonic_productions"); if (!$productions.length) return; $button = $("#reload_productions_button").button_with_loading_indicator(); url = 'https://auphonic.com/api/productions.json?bearer_token={token}' .replace('{token}', PODLOVE.Auphonic.get_token()); $("#reload_productions_button").on('click', fetch); $.subscribe('/auphonic/createproduction/done', addCreatedProduction); fetch(); }); }; var refreshSelectUI = function() { jQuery("#auphonic_productions") .change() .trigger("chosen:updated"); // for "chosen" }; var fetch = function(e, production) { $button.trigger('start'); $.getJSON(url, function(data) { if (!data) return; var production_list = [], auphonic_productions = data.data; $("#auphonic_productions").empty(); $("#auphonic_productions").append('\n'); $(auphonic_productions).each(function(key, auphonic_production) { $("#auphonic_productions").append(productionOptionTag(auphonic_production, production)); }); refreshSelectUI(); }).fail(function() { $button.trigger('fail'); }).done(function() { $button.trigger('stop'); }); }; var addCreatedProduction = function(e, production) { // deselect currently selected $("#auphonic_productions option:selected").removeAttr("selected"); // add new option and select it $("#auphonic_productions").prepend(productionOptionTag(production, production)); refreshSelectUI(); $.publish('/auphonic/createdproduction/added', [production]); }; /** * Generates \n'); $option.data({ "title": production_title, "date": date, "datestring": timeSince(date), "status": production.status_string, "status_number": production.status, "warning_message": production.warning_message }); return $option; }; var timeSince = function (date) { var seconds = Math.floor((new Date() - date) / 1000); var interval = Math.floor(seconds / 31536000); if (interval > 1) { return interval + " years ago"; } interval = Math.floor(seconds / 2592000); if (interval > 1) { return interval + " months ago"; } interval = Math.floor(seconds / 86400); if (interval > 1) { return interval + " days ago"; } interval = Math.floor(seconds / 3600); if (interval > 1) { return interval + " hours ago"; } interval = Math.floor(seconds / 60); if (interval > 1) { return interval + " minutes ago"; } return "just now"; }; init(); return {}; }()); /** * Auphonic File Uploader * * This module handles the file upload of media files to Auphonic. */ PODLOVE.AuphonicFileUploader = (function() { var $service; var init = function() { $(document).ready(function () { $service = $("#auphonic_services"); $.subscribe('/auphonic/fileupload', doUpload); }); }; var isFileUpload = function() { return $service.val() === "file" && typeof getFile() === "object"; }; var getFile = function() { return document.querySelector('#auphonic_local_upload_url').files[0]; }; var doUpload = function(event, production, button) { $.publish('/auphonic/fileupload/before', [production]) var url = 'https://auphonic.com/api/production/{uuid}/upload.json'.replace('{uuid}', production.uuid), xhr2 = PODLOVE.Auphonic.createCORSRequest("POST", url), formData = new FormData(), fail = function() { button.trigger('fail'); }; xhr2.addEventListener("error", fail, false); xhr2.addEventListener("abort", fail, false); xhr2.upload.addEventListener("progress", function(e) { var percent = (e.loaded / e.total) * 100; $.publish('/auphonic/fileupload/progress', [production, percent]) }, false); xhr2.onload = function(e) { var response = JSON.parse(e.target.response), production = production = response.data; update_production_status(production.status_string, production.status); update_production_warning(production.warning_message); $.publish('/auphonic/fileupload/done', [production]) $.publish('/auphonic/createproduction/done', [production]); button.trigger('stop'); }; formData.append('input_file', getFile()); xhr2.setRequestHeader("Authorization", "Bearer " + PODLOVE.Auphonic.get_token()); xhr2.send(formData); }; init(); return { isFileUpload: isFileUpload }; }()); /** * Auphonic CreateProduction Status * * This module handles the status text for production creation * and file upload. */ PODLOVE.AuphonicCreateProductionStatus = (function() { var $status; var init = function() { $(document).ready(function () { $status = $("#auphonic-production-status"); $status.html('Please select a File').show(); // upload $.subscribe('/auphonic/fileupload/before', updateUploadBefore) $.subscribe('/auphonic/fileupload/progress', updateUploadProgress) $.subscribe('/auphonic/fileupload/done', updateUploadDone); $.subscribe('/auphonic/createproduction/before', updateProductionStart) // create production $.subscribe('/auphonic/createproduction/success', updateProductionSuccess) $.subscribe('/auphonic/createproduction/done', updateProductionDone) }); }; var updateProductionDone = function(e) { // $status.delay(1500).slideUp(300); }; var updateProductionSuccess = function(e) { $status.html("Production created").removeClass('status-progress').addClass('status-ok').show(); }; var updateProductionStart = function(e) { $status.html("Creating production").addClass('status-progress').removeClass('status-ok').css("display", "block"); }; var updateUploadBefore = function(e, production) { $status.html("File Upload").addClass('status-progress').removeClass('status-ok').show(); }; var updateUploadProgress = function(e, production, percent) { $status.html("File Upload " + Math.round(percent) + "%").show(); }; var updateUploadDone = function(e, production) { $status.html("File Uploaded").show().removeClass('status-progress').addClass('status-ok'); // $status.delay(1500).slideUp(300); }; init(); return {}; }()); }(jQuery)); jQuery(function($) { if ($("#auphonic").length && pagenow && pagenow === "podcast") { PODLOVE.AuphonicImport(); PODLOVE.AuphonicPresetFetcher(); } $(".podlove_auphonic_production_refresh").on( 'click', function() { PODLOVE.Auphonic.refresh_preset_list( this ); }); });