/** * @package Audio Merchant * @version 5.0.4 * @author Audio Merchant * @copyright (C) Copyright 2015 Audio Merchant, MyAudioMerchant.com. All rights reserved. * @license GNU/GPL http://www.gnu.org/licenses/gpl-3.0.txt This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ var newAudioWnd = null; var htmlWidgetDlg = null; var errorMessageWnd = null; var successMessageWnd = null; var successMessageWnd2 = null; var uploadBaseUrl = null; var theFollowingErrorOccurredText = 'The following error(s) have occurred:'; var unknownErrorOccurredTxt = 'An unknown error occurred, please try your request again.'; var urlImgBase = ''; var audioInventoryTable = null; var htmlPlayerTable = null; var successWndRefreshMsg = 'Success! Please click okay to refresh the window with your latest changes...'; var editItemTxt = 'Edit'; var deleteItemTxt = 'Delete'; var confirmDeleteMsg = 'Are you sure you want to delete this item?'; var successDeleteMsg = 'Successfully deleted item!'; var newAudioWndTitle = 'Add Audio'; var saveSuccessMsg = 'Your latest changes were saved successfully!'; var displayAllTxt = 'Display All'; var selectedTxt = 'Selected'; var textMatchTxt = 'Text Match'; var ascendingTxt = 'Ascending'; var descendingTxt = 'Descending'; var filesSelected = 'Files Selected'; var fileSelected = 'File Selected'; var createHTMLWidgetTxt = 'Add Playlist'; var amTooltips = null; var ordersTables = null; var viewTxt = 'View'; var receiptUrl = ''; var confirmChangeStatusTxt = 'Are you sure you want to change the status for this order?'; var shareItemtxt = 'Share'; var loadingTxt = 'Loading...'; var shareDialog = null; var lastId = 0; var lastShareMode = 'audio_id'; var emptyAudioTxt = 'There are currently no audio files to show with the specified criteria.'; var savingPleaseWaitxt = 'Saving, please wait...'; function toggle_upload_field(mode, toggleLinkClicked, showWrapper) { var toggleLinkParent = jQuery(toggleLinkClicked).parent(); toggleLinkParent.find('a').removeClass('hidden').removeClass('last_small_url'); jQuery(toggleLinkClicked).addClass('hidden'); toggleLinkParent.find('a:visible:last').addClass('last_small_url'); var mainParent = toggleLinkParent.parent(); mainParent.find('div').removeClass('hidden').addClass('hidden'); jQuery('#'+showWrapper).removeClass('hidden'); jQuery(toggleLinkParent).removeClass('hidden'); mainParent.find('.upload_mode').val(mode); } function addNewAudioFile() { var dialogSaveBtn = jQuery('.new_audio_wnd .ui-button-text:contains(Save)'); dialogSaveBtn.html(savingPleaseWaitxt); dialogSaveBtn.parent().button("disable"); var actionUrl = ajaxurl.split('?')[0]+'?action=audio_merchant_add_audio_file'; jQuery.ajax({ url: actionUrl, type: 'POST', data: new FormData(jQuery('#new_audio_file_form')[0]), processData: false, contentType: false }).done(function (response) { var isError = false; var errorMsg = ''+theFollowingErrorOccurredText+'
'; if(response) { if(response.errors.length > 0) { isError = true; response.errors.forEach(function (theErrorMsg) { errorMsg += theErrorMsg+'
'; }); } } else { isError = true; errorMsg += unknownErrorOccurredTxt; } errorMsg += '
'; if(isError) { jQuery("#error_msg_wrapper p").html(errorMsg); errorMessageWnd.dialog("open"); dialogSaveBtn.text('Save'); dialogSaveBtn.parent().button("enable"); } else { jQuery("#success_msg_wrapper p").html(successWndRefreshMsg); successMessageWnd.dialog("open"); } }).fail(function(jqXHR, textStatus, errorThrown) { jQuery("#error_msg_wrapper p").html(errorThrown); errorMessageWnd.dialog("open"); dialogSaveBtn.text('Save'); dialogSaveBtn.parent().button("enable"); }); return false; } function audioMerchantSaveSettings() { jQuery.ajax({ url: ajaxurl.split('?')[0]+'?action=audio_merchant_save_settings', type: 'POST', data: new FormData(jQuery('#settings_form')[0]), processData: false, contentType: false }).done(function (response) { var isError = false; var errorMsg = ''+theFollowingErrorOccurredText+'
'; if(response) { if(response.errors.length > 0) { isError = true; response.errors.forEach(function (theErrorMsg) { errorMsg += theErrorMsg+'
'; }); } } else { isError = true; errorMsg += unknownErrorOccurredTxt; } errorMsg += '
'; if(isError) { jQuery("#error_msg_wrapper p").html(errorMsg); errorMessageWnd.dialog("open"); } else { jQuery("#success_msg_wrapper p").html(successWndRefreshMsg); successMessageWnd.dialog("open"); } }).fail(function(jqXHR, textStatus, errorThrown) { jQuery("#error_msg_wrapper p").html(errorThrown); errorMessageWnd.dialog("open"); }); return false; } function convertSecondsToMinutes(seconds) { seconds = Number(seconds).toFixed(); var hours = Math.floor(seconds / 3600); var minutes = Math.floor((seconds - (hours * 3600)) / 60); var seconds = seconds - (hours * 3600) - (minutes * 60); var time = ""; if (hours != 0) { time = String(hours)+":"; } if (minutes != 0 || time !== "") { minutes = (minutes < 10 && time !== "") ? "0"+String(minutes) : String(minutes); time += String(minutes)+":"; } if (time === "") { time = '0:'; if (String(seconds).length < 2) { time += '0'; } time += String(seconds); } else { time += (seconds < 10) ? "0"+String(seconds) : String(seconds); } return time; } jQuery(document).ready(function ($) { jQuery("#audio_merchant_main_tabs").tabs(); jQuery("#add_audio_btn").button({ icons: { primary: "ui-icon-circle-plus" } }).click(function (event) { event.preventDefault(); openAddNewAudioFileWnd(); }); jQuery("#create_html_player_widget_btn").button({ icons: { primary: "ui-icon-circle-plus" } }).click(function (event) { event.preventDefault(); createHTMLWidget(); }); jQuery("#save_settings_btn").button({ icons: { primary: "ui-icon-disk" } }); newAudioWnd = jQuery("#new_audio_wnd").dialog({ autoOpen: false, width: 550, modal: false, dialogClass: 'new_audio_wnd', buttons: { Save: function () { addNewAudioFile(); } }, close: function (event, ui) { jQuery('.ui-tooltip').hide(); } }); htmlWidgetDlg = jQuery("#html_widget_dlg").dialog({ autoOpen: false, width: 550, modal: false, dialogClass: 'html_widget_dlg', buttons: { Save: function () { audioMerchantSaveHTMLPlayer(); } }, close: function (event, ui) { jQuery('.ui-tooltip').hide(); } }); shareDialog = jQuery("#share_dialog").dialog({ modal: false, autoOpen: false, width: 'auto', buttons: { Close: function() { jQuery(this).dialog("close"); } }, close: function (event, ui) { jQuery('.ui-tooltip').hide(); } }); errorMessageWnd = jQuery("#error_msg_wrapper").dialog({ modal: false, autoOpen: false, buttons: { Ok: function() { jQuery(this).dialog("close"); } }, close: function (event, ui) { jQuery('.ui-tooltip').hide(); } }); successMessageWnd = jQuery("#success_msg_wrapper").dialog({ modal: false, autoOpen: false, buttons: { Ok: function() { jQuery(this).dialog("close"); jQuery(".ui-dialog-content").dialog("close"); location.reload(true); } }, close: function (event, ui) { jQuery('.ui-tooltip').hide(); } }); successMessageWnd2 = jQuery("#success_msg_wrapper2").dialog({ modal: false, autoOpen: false, buttons: { Ok: function() { jQuery(this).dialog("close"); } }, close: function (event, ui) { jQuery('.ui-tooltip').hide(); } }); audioInventoryTable = jQuery('#audio_inventory_table').DataTable({ 'lengthMenu': [[10, 20, 30, 40, 50, -1], [10, 20, 30, 40, 50, "All"]], 'processing': true, 'serverSide': true, 'stateSave': true, "order": [[ 1, "ASC" ]], 'ajax': ajaxurl.split('?')[0]+'?action=audio_merchant_get_audio', "language": { "emptyTable": emptyAudioTxt }, "columnDefs": [ { "render": function (data, type, row) { var result = ''; if (/^https?:/i.test(data)) { result += ''; if (String(data).length > 30) { result += String(data).substring(0, 30)+'...'; } else { result += data; } result += ''; } else if(!data) { result += ''; } else { result += ''; if (String(data).length > 30) { result += String(data).substring(0, 30)+'...'; } else { result += data; } result += ''; } return result; }, "targets": [5,7,8] },{ "render": function (data, type, row) { var output = ''; if (row[4]) { if (/^https?:/i.test(row[4])) { output += ' '; } else { output += ' '; } } if (/^https?:/i.test(row[5])) { output += ''+data+''; } else { output += ''+data+''; } if (row[6]) { if (/^https?:/i.test(row[6])) { output += ' - Preview File'; } else { output += ' - Preview File'; } } return output; }, "targets": [1] },{ className: 'dt-body-center', "render": function (data, type, row) { var output = ''; output += '  '; output += '  '; output += ''; return output; }, "targets": [12], sortable: false },{ "visible": false, "targets": [4,5,6] },{ className: 'dt-body-center', "targets": [0,2,3,10,11] },{ className: 'dt-body-center', "visible": false, "targets": [9], "render": function (data, type, row) { return convertSecondsToMinutes(data); } } ] }); htmlPlayerTable = jQuery('#html_player_table').DataTable({ 'lengthMenu': [[10, 20, 30, 40, 50, -1], [10, 20, 30, 40, 50, "All"]], 'processing': true, 'serverSide': true, 'stateSave': true, "order": [[ 6, "DESC" ]], 'ajax': ajaxurl.split('?')[0]+'?action=audio_merchant_get_playlist', "columnDefs": [ { className: 'dt-body-center', "render": function (data, type, row) { var output = ''; output += '  '; output += '  '; output += ''; return output; }, "targets": [8], sortable: false },{ className: 'dt-body-center', "render": function (data, type, row) { if (data == 'all') { return displayAllTxt; } else if(data == 'selected') { return selectedTxt; } else if(data == 'text_match') { return textMatchTxt; } }, "targets": [2] },{ className: 'dt-body-center', "render": function (data, type, row) { data = data.replace("audio_", ''); data = data.replace("_", ' '); return amUCWords(data); }, "targets": [4] },{ className: 'dt-body-center', "render": function (data, type, row) { if (data == 'ASC') { return ascendingTxt; } else if (data == 'DESC') { return descendingTxt; } }, "targets": [5] },{ className: 'dt-body-center', "render": function (data, type, row) { if (row[2] == 'selected') { var numSongsSelected = (data.match(/,/g) || []).length+1; if (numSongsSelected > 1) { return String(numSongsSelected)+' '+filesSelected; } else { return String(numSongsSelected)+' '+fileSelected; } } else { return data; } }, "targets": [3] },{ className: 'dt-body-center', "targets": [0,6,7] } ] }); ordersTables = jQuery('#orders_table').DataTable({ 'lengthMenu': [[10, 20, 30, 40, 50, -1], [10, 20, 30, 40, 50, "All"]], 'processing': true, 'serverSide': true, 'stateSave': true, "order": [[ 10, "DESC" ]], 'ajax': ajaxurl.split('?')[0]+'?action=audio_merchant_get_order', "columnDefs": [ { className: 'dt-body-center', "render": function (data, type, row) { var output = ''; output += ''; return output; }, "targets": [12], sortable: false }, { className: 'dt-body-center', "render": function (data, type, row) { var output = ''; if (row[1] > 0) { output += '(ID: '+row[1]+') '; } output += data; return output; }, "targets": [3] }, { className: 'dt-body-center', "render": function (data, type, row) { var output = ''; if (row[7] > 0) { output += '(ID: '+row[7]+') '; } output += data; return output; }, "targets": [8] }, { className: 'dt-body-center', "render": function (data, type, row) { var output = ''; return output; }, "targets": [5] }, { className: 'dt-body-center', "targets": [0,1,2,4,6,7,9,10,11] }, { "visible": false, "targets": [1,7] } ] }); amTooltips = jQuery(document).tooltip({ hide: {effect: 'fade', duration: 1} }); jQuery('.vertical_audio_scroller').sortable(); jQuery('.vertical_audio_scroller').disableSelection(); var client = new ZeroClipboard(document.getElementById("copy_share_code_to_clipboard")); jQuery('#settings_form input[type="text"], #settings_form select, #settings_form textarea').on('change keyup paste', function() { updateAuthor(); }); }); function sharePlaylistItem(playListId) { lastId = playListId; lastShareMode = 'playlist_id'; updateShareDialog(); shareDialog.dialog("open"); } function shareAudioItem(audioId) { lastId = audioId; lastShareMode = 'audio_id'; updateShareDialog(); shareDialog.dialog("open"); } function updateShareDialog() { jQuery('#share_dialog_content').val(loadingTxt); jQuery('#copy_share_code_to_clipboard').attr('data-clipboard-text', ''); switch(jQuery('#share_dialog_mode').val()) { case 'wp': var code = ''; code = '[audio_merchant '+lastShareMode+'="'+lastId+'" height="400" auto_play="1"]'; jQuery('#share_dialog_content').val(code); jQuery('#copy_share_code_to_clipboard').attr('data-clipboard-text', code); break; } } function changeOrderStatus(orderId, selectObj, oldValue, newValue) { var answer = confirm(confirmChangeStatusTxt); if (answer) { jQuery.get(ajaxurl.split('?')[0]+'?action=audio_merchant_change_order_status&t='+orderId+'&new_status='+newValue, function (data) { ordersTables.ajax.reload(null, false); }).fail(function(jqXHR, textStatus, errorThrown) { jQuery("#error_msg_wrapper p").html(errorThrown); errorMessageWnd.dialog("open"); }); } else { jQuery(selectObj).val(oldValue); } } function amUCWords(str) { return (str + '').replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g, function($1) { return $1.toUpperCase(); }); } function openAddNewAudioFileWnd() { jQuery('#new_audio_file_form input[type="radio"]').prop('checked', false); jQuery('#new_audio_file_form input[type="text"]').val(''); jQuery('#editing_audio_id').val(''); newAudioWnd.dialog('option', 'title', newAudioWndTitle); newAudioWnd.dialog("open"); toggle_upload_field('upload', document.getElementById('cover_photo_upload_link'), 'cover_photo_upload_file_wrapper'); toggle_upload_field('upload', document.getElementById('audio_upload_link'), 'audio_upload_file_wrapper'); toggle_upload_field('upload', document.getElementById('preview_audio_upload_link'), 'preview_audio_upload_file_wrapper'); toggle_upload_field('upload', document.getElementById('additional_lease_upload_link'), 'additional_lease_file_wrapper'); toggle_upload_field('upload', document.getElementById('additional_exclusive_upload_link'), 'additional_exclusive_file_wrapper'); } function editHTMLPlayer(playerId) { jQuery('#html_widget_form')[0].reset(); toggleCreateHTMLPlayerMode(); var record = htmlPlayerTable.rows(function (idx, data, node) { return parseInt(data[0]) == parseInt(playerId) ? true : false; }).data(); htmlWidgetDlg.dialog('option', 'title', editItemTxt); htmlWidgetDlg.dialog("open"); jQuery('#player_id').val(record[0][0]); jQuery('#playlist_name').val(jQuery('