(function ($) { $().extend( mpl.tools, { popup : new mpl.backbone.views( 'no-model' ).extend({ margin_top : $('html').get(0).offsetTop, no_close : false, params: {}, storage: {}, change_event_id: null, render : function( el, atts ){ mpl.tools.popup.params = atts['params']; mpl.tools.popup.storage = atts['storage']; var keepCurrent = false; if( atts != undefined ){ if( atts.keepCurrentPopups == true ){ keepCurrent = true; } } if( keepCurrent == false ) $('.mpl-params-popup .sl-close.sl-func').trigger('click'); $('.sys-colorPicker').remove(); $('.mpl-controls .more.active').removeClass('active'); var pop_width = 580; if( atts.width != undefined ) pop_width = atts.width; var coor = this.coordinates( el, pop_width, keepCurrent ); var atts = $().extend({ top: coor[0], left: coor[1], pos: coor[2], bottom: coor[3], tip: coor[4], width: pop_width, class: '', float: false, drag: true, content: '', title: 'Settings', help: '', no_cancel: false, footer: true, footer_ext: '', scrollTo: true, save_text: mpl.frontend!=='yes'?mpl.__.save:'OK', cancel_text: mpl.__.cancel }, atts ); if( atts.footer === false && atts.class.indexOf('no-footer') == -1 ) atts.class += ' no-footer'; if( atts.float === true ){ atts.drag = false; atts.class += ' mpl-popup-float'; atts.scrollTo = false; } this.el = $( mpl.template( 'popup', atts ) ); this.el.data({ 'button' : el, 'keepCurrentPopups' : keepCurrent, 'tab_active' : 0 }); if( atts.float === true ){ this.el.on('click', function(e){ if( e.target === this ) $(this).find('button.cancel').trigger('click'); }); $('html').css({'overflow': 'hidden'}); } if( atts.tip != 0 ) this.el.find( '.wp-pointer-arrow' ).css({marginRight: -atts.tip+'px'}); if( atts.scrollBack == true ) this.el.data({ 'scrolltop' : $(window).scrollTop() }); $('body').append( this.el ); if( atts.drag == true ){ mpl.ui.draggable( this.el.get(0), 'h3.m-p-header' ); this.el.find('h3.m-p-header').addClass('mpl-ui-draggable'); } $( this.el ).css({opacity: 1}); if( atts.scrollTo === true ){ setTimeout( function( pop, atts ){ var wsct = $(window).scrollTop(), wh = $(window).height(), wheight = wsct+(wh*0.1); if( wh > 800 ) pop.find('.m-p-body').css({ 'max-height': (wh - 250)+'px' }); var pop_rect = pop.get(0).getBoundingClientRect(); if( atts.top > wheight && atts.bottom === 0 ){ if( pop_rect.height < wh - 50 ){ mpl.ui.scrollAssistive( atts.top - ((wh-pop_rect.height)/2) , true ); }else mpl.ui.scrollAssistive( (atts.top - 50), true ); }else if( pop_rect.top < 0 ) mpl.ui.scrollAssistive( (wsct+pop_rect.top) - 50, true ); }, 1, this.el, atts ); } return this.el; }, coordinates : function( el, pop_width, keepCurrent ){ var grids; if( $(el).closest('#mpl-container').get(0) ) grids = document.getElementById('mpl-container').getBoundingClientRect(); else if( document.getElementById('wpbody-content') !== null ) grids = document.getElementById('wpbody-content').getBoundingClientRect(); else if( document.getElementById('content') !== null ) grids = document.getElementById('content').getBoundingClientRect(); else grids = document.getElementsByTagName('body')[0].getBoundingClientRect(); if( el === undefined ) return [0,0,0,0]; var coor = el.getBoundingClientRect(), swidth = (grids.width/3), sleft = coor.left-grids.left, top = coor.top+$(window).scrollTop()+coor.height-this.margin_top, bottom = 0, left = coor.left+$(window).scrollLeft()+(coor.width/2), tip = 0, pos = '', wheight = $(document).height(), wwidth = $(document).width(); if( sleft < swidth ){ pos = 'left'; left -= 63; }else if( sleft > swidth && sleft < swidth*2 ){ pos = 'center'; left -= (pop_width/2); }else if( sleft > swidth*2 && sleft < swidth*3 ){ pos = 'right'; left -= (pop_width-63); } if( wheight - top < 200 && $(window).scrollTop() > 0 ){ bottom = wheight-top+(coor.height/2); $('html').height( wheight - parseInt( $('html').css('padding-top') ) ); }else if( keepCurrent !== true ){ $('html').height(''); } if( left < 50 ){ tip = left - 50; left = 50; } if( left+swidth > wwidth ){ left -= ( (left+swidth) - wwidth ) + 50; } return [ top, left, pos, bottom, tip ]; }, events : { '.m-p-controls>li>.cancel,.m-p-header .sl-close:click' : 'cancel', '.m-p-header .m-p-toggle:click' : 'toggle', '.m-p-controls>li>.save,.m-p-header .sl-check:click' : 'save' }, cancel : function( e ){ if (mpl.front) { if (mpl.front.save_value === false) { mpl.front.cancel_value=true; var pop = $(e.target).closest('.mpl-params-popup'); if (pop === null || typeof pop.data('change') === undefined) return; var calb = pop.data('change'); if( typeof calb == 'function' ){ calb( this ); } else if ( calb !== undefined && calb.length > 0 ) { for( i = 0; i< calb.length; i++ ){ if( typeof calb[i] == 'function' ){ calb[i]( this, pop, e ); } } } for(var name in mpl.front.stack.init_css){ var css_el=$('.mpl-params-popup').find('[name="'+name+'"]'), css_val=css_el.val(mpl.front.stack.init_css[name]); var pop = $(e.target).closest('.mpl-params-popup'); if( pop === null || typeof pop.data('css_change') === undefined ) return; var calb = pop.data('css_change'); if( typeof calb == 'function' ){ calb( css_el ); }else if( calb !== undefined && calb.length > 0 ){ for( i = 0; i< calb.length; i++ ){ if( typeof calb[i] == 'function' ){ calb[i]( css_el, pop, e ); } } } } } mpl.front.stack.init_css={}; mpl.front.cancel_value=false; mpl.front.save_value=false; } $('html').css({'overflow': ''}); mpl.do_action( 'before_cancel_popup', this ); // We will dont close the popup when in instant saving if( $('#mpl-preload').length > 0 || mpl.tools.popup.no_close === true ){ mpl.tools.popup.no_close = false; return; } if( e.target.tagName == 'INPUT' ) return; var el = $(this).closest('.mpl-params-popup'), keepCurrent = el.data('keepCurrentPopups'), beforecalb, calb, aftercalb, i, prevent = false; if( typeof el.data('before_cancel') !== undefined ){ beforecalb = el.data('before_cancel'); if( typeof beforecalb == 'function' ){ if( beforecalb( el, e ) == 'prevent' ) prevent = true; }else if( beforecalb !== undefined && beforecalb.length > 0 ){ for( i = 0; i< beforecalb.length; i++ ){ if( typeof beforecalb[i] == 'function' ){ if( beforecalb[i]( el, e ) == 'prevent' ) prevent = true; } } } } if( prevent === true ) return; if( typeof el.data('cancel') !== undefined ){ calb = el.data('cancel'); if( typeof calb == 'function' ){ calb( el ); }else if( calb !== undefined && calb.length > 0 ){ for( i = 0; i< calb.length; i++ ){ if( typeof calb[i] == 'function' && calb[i]( el ) == 'prevent' ) prevent = true; } } } if( prevent === true ) return; if( typeof el.data('after_cancel') !== undefined ){ aftercalb = el.data('after_cancel'); if( typeof aftercalb == 'function' ){ aftercalb( el ); }else if( aftercalb !== undefined && aftercalb.length > 0 ){ for( i = 0; i< aftercalb.length; i++ ){ if( typeof aftercalb[i] == 'function' && aftercalb[i]( el ) == 'prevent' ) prevent = true; } } } if( prevent === true ) return; if( el.data('scrolltop') != undefined ) e.data.scrollback( el.data('scrolltop'), el.data('button') ); if( el.data('keepCurrentPopups') !== true ) $('html').height(''); el.remove(); $('.sys-colorPicker').remove(); // remove date picker $('.pika-single').remove(); if( keepCurrent == false ) $('.mpl-params-popup .sl-close.sl-func').trigger('click'); mpl.do_action( 'after_cancel_popup', this ); }, save : function( e ){ mpl.do_action( 'before_save_popup', this ); var el = $(this).closest('.mpl-params-popup'), keepCurrent = el.data('keepCurrentPopups'), beforecalb, calb, aftercalb, i; e.data.el = el; if( typeof el.data('before_callback') !== undefined ){ beforecalb = el.data('before_callback'); if( typeof beforecalb == 'function' ){ beforecalb( el ); }else if( beforecalb !== undefined && beforecalb.length > 0 ){ for( i = 0; i< beforecalb.length; i++ ){ if( typeof beforecalb[i] == 'function' ) beforecalb[i]( el ); } } } if( typeof el.data('callback') !== undefined ){ calb = el.data('callback'); if( typeof calb == 'function' ){ calb( el ); }else if( calb !== undefined && calb.length > 0 ){ for( i = 0; i< calb.length; i++ ){ if( typeof calb[i] == 'function' ) calb[i]( el ); } } } if( typeof el.data('after_callback') !== undefined ){ aftercalb = el.data('after_callback'); if( typeof aftercalb == 'function' ){ aftercalb( el ); }else if( aftercalb !== undefined && aftercalb.length > 0 ){ for( i = 0; i< aftercalb.length; i++ ){ if( typeof aftercalb[i] == 'function' ) aftercalb[i]( el ); } } } // We will dont close the popup when in instant saving if( $('#mpl-preload').length > 0 || mpl.tools.popup.no_close === true ){ mpl.tools.popup.no_close = false; return; } if( el.data('scrolltop') != undefined ) e.data.scrollback( el.data('scrolltop'), el.data('button') ); //el.remove(); el.find('.sl-close.sl-func').trigger('click'); if( keepCurrent == false ){ $('.mpl-params-popup .sl-close.sl-func').trigger('click'); $('html').height(''); } mpl.do_action( 'after_save_popup', this, el ); }, toggle : function( e ){ var pop = $(this).closest('.mpl-params-popup'); if( pop.hasClass('mpl-popup-collapse') ) pop.removeClass('mpl-popup-collapse') else pop.addClass('mpl-popup-collapse') }, scrollback : function( sctop, btn ){ var now = $(window).scrollTop(); if( Math.abs( sctop - now ) > 200 ){ mpl.ui.scrollAssistive( sctop ); } }, add_tab : function( pop, args ) { args = $().extend( { title: '', class: '', cfg: '', callback: function(){} }, args ); var ul = pop.find('.m-p-wrap ul.mpl-pop-tabs'), slug = 'mpl-tab-'+Math.abs(parseInt(Math.random()*1000)), li = $('
  • ' + args.title+'
  • '); /* if this is first tab be added */ if (!ul.get(0)) { ul = $(''); if (pop.find('.fields-edit-form').length > 0) { var fli = $('
  • General
  • '); ul.append( fli ); fli.on( 'click', function( e ) { var wrp = $(this).closest('.m-p-wrap'); wrp.find('>.mpl-pop-tabs li').removeClass('active'); $(this).addClass('active'); wrp.find('.m-p-body>.mpl-pop-tab').removeClass('form-active'); wrp.find('.m-p-body>.fields-edit-form').addClass('form-active'); if( e.originalEvent !== undefined ) $(this).closest('.mpl-params-popup'). data({ tab_active: $(this).parent().find('>li').index( this ) }); mpl.do_action('popup_tab_switch', this ); }); } pop.find('.m-p-header').after( ul ); } ul.append( li ); setTimeout(function(pop, args, slug, li) { var wrp = pop.find('.m-p-body'); var tab = $('
    '); if (wrp.find('form').length === 1) { wrp.find('>.mpl-pop-tab').removeClass('form-active'); tab.addClass("form-active"); } wrp.append(tab); tab.on('submit', function() { $(this).closest('.mpl-params-popup').find('.m-p-footer .save').trigger('click'); return false; }); tab.append( args.callback(li, tab)); var callback = li.data('callback'); if( typeof callback == 'function' ) callback(this, tab); setTimeout(function () { tab.find('.mpl-param-row.field-css .mpl-css-param').each(function () { var name = $(this).attr('name'), value = $(this).attr('value'); mpl.front.stack.init_css[name] = value; }) tab.find('.mpl-param-row.field-css .mpl-css-param').on('change keyup', function (e) { //clearTimeout(mpl.tools.popup.change_event_id); //mpl.tools.popup.change_event_id = setTimeout(function() { if ($(this).attr('name').indexOf('mpl-css[any]') === -1) { return false; } var pop = $(this).closest('.mpl-params-popup'); if (pop === null || typeof pop.data('css_change') === undefined) return; pop.find('.mpl-param-row.field-css').each(function () { $(this).find('.mpl-field-css-value').val(mpl.params.fields.css.field_values(this)); }); var calb = pop.data('css_change'); if (typeof calb == 'function') { calb(this); } else if (calb !== undefined && calb.length > 0) { for (i = 0; i < calb.length; i++) { if (typeof calb[i] == 'function') { calb[i](this, pop, e); } } } //}, 200); }); tab.find('.mpl-param').on( 'change keyup', function(e) { //clearTimeout(mpl.tools.popup.change_event_id); //mpl.tools.popup.change_event_id = setTimeout(function() { var pop = $(this).closest('.mpl-params-popup'); if ( pop === null || typeof pop.data('change') === undefined ) return; var calb = pop.data('change'); if ( typeof calb == 'function' ) { calb( this ); } else if( calb !== undefined && calb.length > 0 ) { for ( i = 0; i< calb.length; i++ ) { if ( typeof calb[i] == 'function' ) { calb[i]( this, pop, e ); } } } //}, 200); }); }, 500); }, 1, pop, args, slug, li); /* Add event for new tab which just be created */ li.on( 'click', args.callback, function(e) { var slug = $(this).data('tab'), wrp = $(this).closest('.m-p-wrap').find('>.m-p-body'); $(this).closest('.m-p-wrap').find('>.mpl-pop-tabs li').removeClass('active'); $(this).addClass('active'); wrp.find('>.mpl-pop-tab').removeClass('form-active'); var tab = wrp.find('>.'+slug), click_actived = false, this_index = $(this).parent().find('>li').index( this ); if( $(this).closest('.mpl-params-popup').data('tab_active') == this_index ) click_actived = true; if( e.originalEvent !== undefined ) $(this).closest('.mpl-params-popup').data({ tab_active: this_index }); mpl.do_action('popup_tab_switch', this ); if( tab.get(0) ) { tab.addClass('form-active'); /* * If the tab is actived and click on it * We don't need to run callback */ if( click_actived === true ) return; var callback = $(this).data('callback'); if( typeof callback == 'function' ) callback( this, tab ); return; } /* 这段代码移动到前面定时器中执行,等测试section属性编辑没问题后再删除。 tab = $('
    '); wrp.append( tab ); tab.on( 'submit', function(){ $(this).closest('.mpl-params-popup').find('.m-p-footer .save').trigger('click'); return false; }); if( typeof e.data == 'function' ) tab.append( e.data( this , tab ) ); var callback = $(this).data('callback'); if( typeof callback == 'function' ) callback( this, tab ); */ }); return li; }, callback : function( pop, args, unique ){ // prevent adding the same callback twice if( unique !== undefined ){ var list_uniques = pop.data( 'callback_uniques' ); if( list_uniques === undefined ) list_uniques = []; else if( list_uniques.indexOf( unique ) > -1 ) return; list_uniques.push( unique ); pop.data({ 'callback_uniques': list_uniques }); } var calls; for( var st in args ){ calls = []; if( pop.data( st ) !== undefined ){ if( typeof pop.data( st ) == 'function' ) calls.push( pop.data( st ) ); else if( typeof pop.data( st ) == 'object' ) calls = pop.data( st ); } calls.push( args[st] ); pop.data( st, calls ); } }, close_all : function() { $('.mpl-params-popup .sl-close.sl-func').trigger('click'); } }), } ); $().extend(mpl.tools, { delay: (function () { var timer = 0; return function (callback, time) { clearTimeout(timer); timer = setTimeout(callback, time); }; })(), esc_slug: function (str) { if (str === undefined) return 'king-composer'; str = str.replace(/^\s+|\s+$/g, ''); str = str.toLowerCase(); var from = "àáäâèéëêìíïîòóöôùúüûñç·/,:;"; var to = "aaaaeeeeiiiioooouuuunc-----"; for (var i = 0, l = from.length; i < l; i++) { str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i)); } str = str.replace(/[^a-z0-9 -\_]/g, '') .replace(/\s+/g, '-') .replace(/-+/g, '-'); return str; }, esc_attr: function (str) { if (!str) { return ''; } return str.toString() .replace(//g, ':gt:') .replace(/\[/g, ':lsqb:') .replace(/\]/g, ':rsqb:') .replace(/"/g, ':quot:') .replace(/'/g, ':apos:'); }, unesc_attr: function (str) { if (!str) { return ''; } return str.toString() .replace(/:lt:/g, '<') .replace(/:gt:/g, '>') .replace(/:lsqb:/g, '[') .replace(/:rsqb:/g, ']') .replace(/:quot:/g, '"') .replace(/:apos:/g, '\''); }, esc: function (str) { if (!str) { return ''; } return str.toString().replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); }, unesc: function (str) { if (str == undefined) { return ''; } return str.toString().replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') .replace(/"/g, '"') .replace(/'/g, '\''); }, rawdecode: function (input) { return decodeURIComponent(input + ''); }, rawencode: function (input) { input = (input + '').toString(); return encodeURIComponent(input). replace(/!/g, '%21'). replace(/'/g, '%27'). replace(/\(/g, '%28'). replace(/\)/g, '%29'). replace(/\*/g, '%2A'); }, decode_css: function (css) { var css_code = ''; css = css.replace(/\s+/g, ' ') .replace(/\/\*[^\/\*]+\*\//g, '') .replace(/\"/g, "'") .replace(/[^a-zA-Z0-9\-\_\. \:\(\)\%\+\~\;\#\'\!\{\}\@\/]+/g, '') .trim().split('{'); for (var n in css) { if (css[n].indexOf('}') > -1) { css[n] = css[n].split('}'); css[n][0] = css[n][0].split(';'); for (var m in css[n][0]) { if (css[n][0][m].trim() != '') css_code += " " + css[n][0][m] + ";\n"; } if (css[n][1].trim() != '') css_code += "}\n" + css[n][1] + "{\n"; else css_code += "}\n"; if (css[n][2] != undefined) css_code += "}\n"; } else if (css[n].trim() != '') { css_code += css[n] + "{\n" } } return css_code; }, encode_css: function (css) { if (css == undefined) css = ''; css = css.replace(/\/\*[^\/\*]+\*\//g, '') .replace(/\ \ /g, '') .replace(/[^a-zA-Z0-9\-\_\. \:\(\)\%\+\~\;\!\#\'\{\}\@\/]+/g, '').trim(); return css; }, nfloat: function (n, m) { n = n.toString(); if (m === undefined) m = 2; if (n.indexOf('.') > -1) { return parseFloat(n.substr(0, n.indexOf('.') + m + 1)); } else return parseFloat(n); }, getFormGroupData: function (pop) { var tab_names = {}, encodes = [], unindexed = {}, indexed = {}; pop.find('.m-p-wrap ul.mpl-pop-tabs li').each(function() { tab_names[$(this).attr('data-cfg').split('|')[0].split(' ').join('_').toLowerCase()] = $(this).data('tab'); }); for (var key in tab_names) { unindexed[key] = {}; unindexed[key] = pop.find('form.' + tab_names[key] + ' .mpl-param:not(.mpl-ns-param)').serializeArray(); indexed[key] = {}; indexed[key] = this.reIndexForm(unindexed[key], encodes); } return indexed; }, getFormData: function (pop, encode) { /* * correct data type before export */ var form = pop.find('form.fields-edit-form').get(0), encodes = [], unindexed = pop.find('form.fields-edit-form .mpl-param:not(.mpl-ns-param)').serializeArray(); if (encode) { pop.find('form.fields-edit-form [data-encode="base64"]').each(function () { encodes.push(this.name); }); } return this.reIndexForm(unindexed, encodes); }, reIndexForm: function (unindexed, encodes) { var indexed = {}, avoidRepeat = {}, name, obs, j, k; $.map(unindexed, function (n, i) { if (encodes.indexOf(n['name']) > -1) n['value'] = mpl.tools.base64.encode(n['value']); if (n['name'].indexOf('[') == -1) { if (n['value'] != '') { if (indexed[n['name']] == undefined || indexed[n['name']] == '__empty__') indexed[n['name']] = n['value']; else indexed[n['name']] += ',' + n['value']; } else if (indexed[n['name']] === undefined) { indexed[n['name']] = ''; } } else { n['name'] = "[" + n['name'].replace('[', ']['); name = n['name'].replace(/\[/g, "['").replace(/\]/g, "']"); obs = []; [].forEach.call(n['name'].split(']['), function (sp) { sp = sp.replace(/\[/g, '').replace(/\]/g, '').trim(); obs[obs.length] = sp; }); if (obs.length > 0) { k = ''; for (j = 0; j < obs.length; j++) { k += "['" + obs[j] + "']"; eval("if( indexed" + k + "==undefined )indexed" + k + "={};"); } } var query = "if( typeof(indexed" + name + ") != 'string' )indexed" + name + "=n['value'];else if(n['value']!=='') indexed" + name + "+=','+n['value'];"; eval(query); } }); delete avoidRepeat, name, obs, j, k; return indexed; }, basename: function (str) { var base = str.split(/[\\/]/).pop(); if (base.lastIndexOf(".") != -1) base = base.substring(0, base.lastIndexOf(".")); return base; }, toClipboard: function (str) { if (window.clipboardData) { window.clipboardData.setData("Text"); } else { document.oncopy = function (event) { event.clipboardData.setData('text', str); event.preventDefault(); }; document.execCommand("Copy", false, null); document.oncopy = null; } }, rgb2hex: function (rgb) { if (rgb.indexOf('rgb') === -1 || rgb.indexOf('(') === -1 || rgb.indexOf(')') === -1) return rgb; rgb = rgb.split('(')[1].split(')')[0].split(','); function hex(x) { return ("0" + parseInt(x.trim()).toString(16)).slice(-2); } return "#" + hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]); }, hex2rgb: function (hex) { r = hex.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i); if (r) { return r.slice(1, 4).map(function (x) { return parseInt(x, 16); }); } // short version r = hex.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i); if (r) { return r.slice(1, 4).map(function (x) { return 0x11 * parseInt(x, 16); }); } return hex; }, base64: { encode: function (input) { if (input === undefined || input === '') { return ''; } try { return window.btoa(unescape(encodeURIComponent(input))); } catch (ex) { return input; } }, decode: function (input) { if (input === undefined || input === '') { return ''; } try { return decodeURIComponent(escape(window.atob(input))); } catch (ex) { return input; } }, }, media: { el: null, callback: null, uploader: null, open: function (e) { if (typeof e.preventDefault == 'function') e.preventDefault(); atts = $().extend( { frame: 'select', multiple: false, title: 'Choose Image', button: 'Choose Image', type: 'image' }, e.data.atts); mpl.tools.media.el = this; if (typeof e.data.callback == 'function') mpl.tools.media.callback = e.data.callback; else mpl.tools.media.callback = null; if (mpl.tools.media.uploader) { return mpl.tools.media.uploader.open(); } var insertImage = wp.media.controller.Library.extend({ defaults: _.defaults({ id: 'insert-image', title: atts.title, button: { text: atts.button }, multiple: false, editing: true, allowLocalEdits: true, displaySettings: true, displayUserSettings: true, type: atts.type }, wp.media.controller.Library.prototype.defaults) }); //Extend the wp.media object mpl.tools.media.uploader = wp.media.frames.file_frame = wp.media({ frame: atts.frame, state: 'insert-image', states: [new insertImage()] }); mpl.tools.media.uploader.on('select', function (e) { var currentSize = $('.attachment-display-settings .size').val() var state = mpl.tools.media.uploader.state('insert-image'); var attachments = state.get('selection'); if (attachments.length === 0) { if ($('#embed-url-field').get(0) && $('#embed-url-field').val() != null) { if (typeof mpl.tools.media.callback == 'function') mpl.tools.media.callback({ url: $('#embed-url-field').val(), sizes: {} }, $(mpl.tools.media.el) ); } } else { attachments.map(function (attachment) { var attachment = attachment.toJSON(); attachment.size = currentSize; if (typeof mpl.tools.media.callback == 'function') mpl.tools.media.callback(attachment, $(mpl.tools.media.el)); }); } }); mpl.tools.media.uploader.on('open', function (e) { var ids = $(mpl.tools.media.el).parent().find('.mpl-param').val(); if (ids === undefined || ids == null || ids == '' || ids == 'undefined') return; ids = ids.split(','); var selection = mpl.tools.media.uploader.state().get('selection'); var attachments = []; ids.forEach(function (id) { attachments[attachments.length] = wp.media.attachment(id); }); selection.add(attachments); }); //Open the uploader dialog return mpl.tools.media.uploader.open(); }, els: null, callbacks: null, uploaders: null, opens: function (e) { if (typeof e.preventDefault == 'function') e.preventDefault(); mpl.tools.media.els = this; if (typeof e.data == 'function') mpl.tools.media.callbacks = e.data; else mpl.tools.media.callbacks = null; if (mpl.tools.media.uploaders) { mpl.tools.media.uploaders.open(); return false; } //Extend the wp.media object mpl.tools.media.uploaders = wp.media.frames.file_frame = wp.media({ title: mpl.__.i46, button: { text: mpl.__.i46 }, multiple: true, editing: true, allowLocalEdits: true, displaySettings: true, displayUserSettings: true, }); mpl.tools.media.uploaders.on('select', function (e) { var attachments = mpl.tools.media.uploaders.state().get('selection'); attachments.map(function (attachment) { var attachment = attachment.toJSON(); if (typeof mpl.tools.media.callbacks == 'function') mpl.tools.media.callbacks(attachment, $(mpl.tools.media.els)); }); }); mpl.tools.media.uploaders.on('open', function (e) { // Maybe we dont need to active selected images return false; var ids = $(mpl.tools.media.els).parent().find('.mpl-param').val(); if (ids === undefined || ids == null || ids == '') return; ids = ids.split(','); var selection = mpl.tools.media.uploaders.state().get('selection'); var attachments = []; ids.forEach(function (id) { attachments[attachments.length] = wp.media.attachment(id); }); selection.add(attachments); }); //Open the uploader dialog mpl.tools.media.uploaders.open(); return false; } }, editor: { insert: function (id, html) { var editor, hasTinymce = typeof tinymce !== 'undefined', hasQuicktags = typeof QTags !== 'undefined'; wpActiveEditor = id; if (hasTinymce) { editor = tinymce.get(wpActiveEditor); } if (editor && !editor.isHidden()) { editor.execCommand('mceInsertContent', false, html); } else if (hasQuicktags) { QTags.insertContent(html); } else { document.getElementById(wpActiveEditor).value = html; } }, init: function (textarea) { if ($('#wp-link').parent().hasClass('wp-dialog')) { $('#wp-link').wpdialog('destroy'); } textarea.val(switchEditors.wpautop(textarea.val())); var eid = textarea.attr("id"), tmi = window.tinyMCEPreInit, tmic = tmi.mceInit, tmiq = tmi.qtInit; try { if (_.isUndefined(tinyMCEPreInit.qtInit[eid])) { tmiq[eid] = _.extend({}, tmiq[window.wpActiveEditor], { id: eid }); } if (tmi && tmic[window.wpActiveEditor]) { tmic[eid] = _.extend( {}, tmic[window.wpActiveEditor], { resize: 'vertical', height: 250, id: eid, setup: function (e) { if (typeof (e.on) != 'undefined') { e.on('init', function (e) { e.target.focus(); window.wpActiveEditor = eid; }); } else { e.onInit.add(function (e) { e.focus(); window.wpActiveEditor = eid; }); } } } ); tmic[eid].wp_autoresize_on = false; window.wpActiveEditor = eid; } quicktags(tmic[eid]); QTags._buttonsInit(); if (window.tinymce) { window.switchEditors && window.switchEditors.go(eid, 'tmce'); if (tinymce.majorVersion === "4") { tinymce.execCommand('mceAddEditor', true, eid); var textarea = $('#' + eid); if (tinyMCE.get(eid) !== null) { tinyMCE.get(eid).on('keyup mouseup change', function (e) { textarea.val(tinyMCE.activeEditor.getContent({ format: 'raw' })).change(); }); } textarea.on('keyup mouseup', function () { textarea.change(); }); } } } catch (e) { $('#wp-' + eid + '-wrap').html('Tinymce Error!'); if (console && console.error) { console.error(e); } } } }, get_icons: function () { if (mpl.icons != undefined) return mpl.icons; function css_text(x) { return x.cssText; } var files = document.querySelectorAll('*[id^="mpl-sys-icon-"]'), html = '', css; if (!files || files.length === 0) return ''; for (var i = 0; i < files.length; i++) { css = Array.prototype.map.call(files[i].sheet.cssRules, css_text).join('\n'); css = css.split('::before'); css.forEach(function (i) { i = i.split('.')[1]; if (i !== undefined && i.indexOf('/') == -1) html += ''; }); } mpl.icons = html; return html; }, filter_images : function(str) { var m, str, regxx = new RegExp('\%SITE\_URL\%(.+?)(\'|\"|\\)|\ )', 'g'); while (m = regxx.exec(str)) { if ( m[0].indexOf('mpl_get_thumbn') === -1 ) { str = str.replace(m[0], mpl_ajax_url + '?action=mpl_get_thumbn&type=filter_url&id=' + encodeURIComponent(m[1]) + m[2]); } else { str = str.replace(m[0], mpl_ajax_url + m[1] + m[2]); } } return str; }, reverse: function (s) { var o = []; for (var i = 0, len = s.length; i <= len; i++) o.push(s.charAt(len - i)); return o.join(''); }, }); })(jQuery);