var cpmp = function($){ // Messages var files_required = 'At least a Songs/Videos files must be entered', annotation_required = 'Please, enter the item title to identify it'; // Extend array function inArray(a, v){ for(var j in a){ if(a[j] == v){ return j; } } return -1; } // Create the JSON object used through the project var JSON = JSON || {}; // implement JSON.stringify serialization JSON.stringify = JSON.stringify || function (obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = '"'+obj+'"'; return String(obj); } else { // recurse array or object var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (t == "string") v = '"'+v+'"'; else if (t == "object" && v !== null) v = JSON.stringify(v); json.push((arr ? "" : '"' + n + '":') + String(v)); } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } }; // implement JSON.parse de-serialization JSON.parse = JSON.parse || function (str) { if (str === "") str = '""'; eval("var p=" + str + ";"); return p; }; function is_empty(v){ return /^\s*$/.test(v); } function display_item_form(){ obj.clear_item_form(); $('#item_form').show(); } function set_skin(e, skin, width, height){ e = $(e); $('.skin_selected').removeClass('skin_selected').css('border', '0px'); e.addClass('skin_selected').css('border','1px dotted #CCC'); $('input[name="cpmp_skin"]').val(skin); if(width){ $('#cpmp_width_info').text('Value should be greater than or equal to:'+width); $('#cpmp_height_info').text('Value should be greater than or equal to:'+height); } } function load_additional_skins(data){ var s = $('#skin_container'), title = ' - Updates the premium version of plugin to get this skin'; if(s.length){ $.getJSON('//cpmediaplayer.dwbooster.com/cpmp_skins.php?callback=?', function(data){ if(data){ var skin_list = []; if(typeof cpmp_skin_list != 'undefined' && cpmp_skin_list){ skin_list = cpmp_skin_list; } for(var i=0, h=data.length; i < h; i++){ if(inArray(skin_list, data[i].id) == -1) s.append(''); } } }); } } function remove_player(){ $('#cpmp_action').val('remove').parents('form')[0].submit();; } function add_field(e, base){ var id = new Date().getTime(); var e = $(e), p = e.parent('div'), c = p.clone(), l = c.find('.thickbox'); if(l.length) l.attr('href', l.attr('href').replace(/container_id=[^&]+&/i, 'container_id='+base+id+'&')); c.find('.'+base).attr('id', base+id); c.find('input[type="text"]').val(''); if(c.find('.remove_field').length == 0) c.append('[-] Remove'); p.after(c); return c; } function remove_field(e){ $(e).parent('div').remove(); } function add_item(){ var item_id = $('#item_id').val(); var annotation = $('#item_annotation').val(), item = { id : (item_id == "") ? new Date().getTime() : item_id, annotation : annotation.replace(/\"/g,"""), link : $('#item_link').val().replace(/\"/g,"""), poster : ($('#item_poster').length) ? $('#item_poster').val().replace(/\"/g,""") : "", files : [], subtitles : [] }; $('#item_form').find('.item_file').each(function(i, e){ var v = $(this).val(); if(!is_empty(v)) item.files[i] = v.replace(/\"/g,"""); }); // Requirements if(is_empty(item.annotation)){ alert(annotation_required); return; } if(item.files.length == 0){ alert(files_required); return; } $('#item_form').find('.item_subtitle').each(function(i, e){ var v = $(this).val(); if(!is_empty(v)){ item.subtitles[i] = { 'link' : v.replace(/\"/g,""") }; var l = $(this).next('.item_subtitle_lang').val(); if(!is_empty(l)){ item.subtitles[i]['language'] = l.replace(/\"/g,"""); }else{ l = v.substr(v.lastIndexOf('/')+1); var p = l.lastIndexOf('.'); l = l.substr(0, ((p != -1) ? p: l.length)); item.subtitles[i]['language'] = l.replace(/\"/g,"""); } } }); if(item_id == ''){ // Insert a new item obj.items.push(item); $('#items_container').append( '
'+ '
'+ ''+ ''+ ''+ '
'+ '
'+annotation+'
'+ '
'+ '
'); }else{ // Edit an existent item for(var i = 0, h = obj.items.length; i < h; i++){ if(obj.items[i].id == item_id){ obj.items[i] = item; // Update the item text in playlist $('#'+item_id).find('span').text(annotation); break; } } } clear_item_form(); } function delete_item(item_id){ // Clear item form if item is selected if( $('#item_id').val() == item_id){ obj.clear_item_form(); } for(var i = 0, h = obj.items.length; i < h; i++){ if(obj.items[i].id == item_id){ obj.items.splice(i, 1); // Remove item from obj.items $('#'+item_id).remove();// Remove item from playlist return; } } } function swap(a, b){ var ea = $('#'+a), eb = $('#'+b), tmp; tmp = ea.html(); ea.html(eb.html()); eb.html(tmp); ea.attr('id', b); eb.attr('id', a); } function move_item(item_id, disp){ var l = obj.items.length, e, ne, np, p = -1, tmp; if(l){ for(var i = 0; i < l; i++){ if(obj.items[i].id == item_id){ p = i; break; } } np = p+disp; if(np < l && np >= 0){ tmp = obj.items[p]; obj.items[p] = obj.items[np]; obj.items[np] = tmp; //ordering visual components swap(obj.items[p].id, obj.items[np].id); } } } function clear_item_form(){ $('#item_form').find('input[type="text"], input[type="hidden"]').val(''); $('.remove_field').click(); } function hide_item_form(){ $('#item_form').hide(); } function submit_item_form(){ if(is_empty($('#cpmp_player_name').val())){ alert('The media player\' name is required.'); return; } if(obj.items.length){ var f = $('#cpmp_media_player_form'), playlist_items_str = JSON.stringify(obj.items), playlist_field = $(''); playlist_field.val(playlist_items_str); f.append(playlist_field); f[0].submit(); }else{ alert('At least a item must be entered to playlist.'); } } function edit_item($pl_item){ function set_value(e, value){ if(value){ $('#'+e).val(value); } }; var item_id = $pl_item.attr('id'); // Clear the item form obj.clear_item_form(); $('#item_form').show(); // Search the item data for(var i = 0, h = obj.items.length; i < h; i++){ if(obj.items[i].id == item_id){ var item = obj.items[i]; set_value('item_id', item_id); set_value('item_annotation', item.annotation.replace(/"/g, '"')); set_value('item_link', item.link); set_value('item_poster', item.poster); for(var j = 0, k = item.files.length; j < k; j++){ var e = $('.item_file').last(); if(e.val() != ""){ e = obj.add_field(e, 'item_file').find('.item_file'); } e.val(item.files[j]); } for(var j = 0, k = item.subtitles.length; j < k; j++){ var subtitle = item.subtitles[j], e = $('.item_subtitle').last(); if(e.val() != ""){ e = obj.add_field(e, 'item_subtitle').find('.item_subtitle'); } e.val(subtitle.link) e.next('.item_subtitle_lang').val(subtitle.language); } } } } function new_player_window( type ) { var c = $( '
'+ ''+ '
'+cpmp_insert_media_player.skins+'  
'+ '
' ), b = $(''); b.appendTo(c.find('#cpm_controls_container')) .on('click', function(){ var media = wp.media( { title: 'Select Media File', library: { type: [type] }, button: { text: 'Select Item' }, multiple: true }).on('select', function() { var player = "", playlist = "\n", skin = $('#cpmp_skins'), attachments = media.state().get('selection').map( function( attachment ) { return attachment.toJSON(); } ); if(attachments.length) { for(var i in attachments) { var fileObj = attachments[i], url = fileObj.url, name = ''; if(('title' in fileObj) && fileObj['title'].length) name = fileObj['title']; else if(('description' in fileObj) && fileObj['description'].length) name = fileObj['description']; else name = fileObj['filename']; playlist += "[cpm-item file=\""+url+"\"]"+name+"[/cpm-item]\n"; } } player = '[cpm-player skin="'+((skin.length) ? skin.val(): 'classic-skin')+'" width="100%" playlist="true" type="'+type+'"]'+playlist+'[/cpm-player]'; if(send_to_editor) send_to_editor(player); c.dialog('close'); } ).open(); }); c.dialog({ dialogClass: 'wp-dialog', modal: true, closeOnEscape: true, buttons: [], close:function(){ $(this).dialog('destroy'); c.remove(); } }); } function open_insertion_window() { var c = $('
' ); c.dialog({ dialogClass: 'wp-dialog', modal: true, closeOnEscape: true, buttons: [ {text: 'OK', click: function() { var p = $('#cpmp_media_player'); if(p.length){ var v = p[0].options[p[0].selectedIndex].value; if(send_to_editor){ send_to_editor('[codepeople-html5-media-player id="'+v+'"]'); } } $(this).dialog("close"); }} ], close:function(){ $(this).dialog('destroy'); c.remove(); } }); }; // Routines for files selection // Main application window['delete_purchase'] = function(id) { if(confirm('Are you sure to delete the purchase record?')){ var f = $('#purchase_form'); f.append(''); f[0].submit(); } }; jQuery('.for-sale').bind('click', function(evt) { var t = $(evt.target); if(t.hasClass('button_for_upload_cpmp')){ var file_path_field = t.parent().find('.file_for_sale'); var media = wp.media( { title: 'Select Media File', button: { text: 'Select Item' }, multiple: false }).on('select', (function( field ){ return function() { var attachment = media.state().get('selection').first().toJSON(); var url = attachment.url; field.val( url ); }; })( file_path_field ) ).open(); } return false; }); // Main program // Global events $('#items_container').bind('click', function(evt){ var t = $(evt.target); if(t[0].tagName == 'SPAN' && t.parents('.playlist_item').length > 0) { var new_position = $('#item_form').offset(); cpmp.edit_item(t.parents('.playlist_item')); $('html, body').stop().animate({ scrollTop: new_position.top }, 500); } }); // CPMP object definition var obj = { items:[] }; // Assign methods obj.display_item_form = display_item_form; obj.set_skin = set_skin; obj.load_additional_skins = load_additional_skins; obj.remove_player = remove_player; obj.add_field = add_field; obj.remove_field = remove_field; obj.clear_item_form = clear_item_form; obj.hide_item_form = hide_item_form; obj.submit_item_form = submit_item_form; obj.add_item = add_item; obj.delete_item = delete_item; obj.move_item = move_item; obj.edit_item = edit_item; obj.open_insertion_window = open_insertion_window; obj.new_player_window = new_player_window; return obj; }(jQuery); jQuery( function($){ if(typeof cpmp_playlist_items != 'undefined' && cpmp_playlist_items){ cpmp.items = cpmp_playlist_items; } cpmp.load_additional_skins(); $( 'select#player_id' ).on( 'change', function( evt ){ var e = $(evt.target); $( '#avp_display_shortcode' ).html( '[cpm-player id="'+e.val()+'"]' ); } ); $( 'select#player_id' ).trigger( 'change' ); } ); function avp_select_file( e ){ var avp_file_path_field = jQuery( e ).parent().find( 'input[type="text"]' ) var media = wp.media( { title: 'Select Media File', button: { text: 'Select Item' }, multiple: false }).on('select', (function( field ){ return function() { var attachment = media.state().get('selection').first().toJSON(); var url = attachment.url; field.val( url ); }; })( avp_file_path_field ) ).open(); return false; } function avp_toggle_additional_attributes(e) { var $ = jQuery, t; e = $(e); t = e.text(); if(t.indexOf('[+]') != -1) t = t.replace('[+]','[-]'); else t = t.replace('[-]','[+]'); e.text(t); $('.cpmp-additional-attr').toggle(); }