/** * This file belongs to the YIT Plugin Framework. * * This source file is subject to the GNU GENERAL PUBLIC LICENSE (GPL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://www.gnu.org/licenses/gpl-3.0.txt */ (function ($) { // select var select_value = function () { var value = ''; if ($(this).attr('multiple')) { $(this).children("option:selected").each(function (i, v) { if (i != 0) value += ', '; value += $(v).text(); }); if (value == '') { $(this).children().children("option:selected").each(function (i, v) { if (i != 0) value += ', '; value += $(v).text(); }); } } else { value = $(this).children("option:selected").text(); if (value == '') value = $(this).children().children("option:selected").text(); } if ($(this).parent().find('span').length <= 0) { $(this).before(''); } $(this).parent().children('span').replaceWith('' + value + ''); }; $('.plugin-option .select_wrapper select').not('.chosen').each(select_value).change(select_value); //Open select multiple $('.plugin-option .select_wrapper').click(function (e) { e.stopPropagation(); $(this).find('select[multiple]').not('.chosen').toggle(); }); //Stops click propagation on select, to prevent select hide $('.plugin-option .select_wrapper select[multiple]').not('.chosen').click(function (e) { e.stopPropagation(); }); //Hides select on window click $(window).click(function () { $('.plugin-option .select_wrapper select[multiple]').not('.chosen').hide(); }) //chosen $('.plugin-option .chosen .select_wrapper select').chosen(); // on-off $('.plugin-option .onoff_container span').on('click', function () { var input = $(this).prev('input'); var checked = input.prop('checked'); if (checked) { input.prop('checked', false).attr('value', 'no').removeClass('onoffchecked'); } else { input.prop('checked', true).attr('value', 'yes').addClass('onoffchecked'); } input.change(); }); //colorpicker $('.plugin-option .panel-colorpicker').wpColorPicker({ onInit: function(){ }, change: function(event, ui){ }, clear: function(){ var input = $(this); input.val(input.data('default-color')); input.change(); } }); //slider $('.plugin-option .slider_container .ui-slider-horizontal').each(function () { var val = $(this).data('val'); var minValue = $(this).data('min'); var maxValue = $(this).data('max'); var step = $(this).data('step'); var labels = $(this).data('labels'); $(this).slider({ value: val, min : minValue, max : maxValue, range: 'min', step : step, slide: function (event, ui) { $(this).find('input').val(ui.value); $(this).siblings('.feedback').find('strong').text(ui.value + labels); } }); }); if (typeof wp !== 'undefined' && typeof wp.media !== 'undefined') { //upload var _custom_media = true, _orig_send_attachment = wp.media.editor.send.attachment; // preview $('.plugin-option .upload_img_url').change(function () { var url = $(this).val(); var re = new RegExp("(http|ftp|https)://[a-zA-Z0-9@?^=%&:/~+#-_.]*.(gif|jpg|jpeg|png|ico)"); var preview = $(this).parents().siblings('.upload_img_preview'); if (re.test(url)) { preview.html(''); } else { preview.html(''); } }).trigger( 'change' ); $( document ).on( 'click', '.plugin-option .upload_button', function(e) { e.preventDefault(); var t = $(this), custom_uploader, id = t.attr('id').replace(/-button$/, ''); //If the uploader object has already been created, reopen the dialog if (custom_uploader) { custom_uploader.open(); return; } var custom_uploader_states = [ // Main states. new wp.media.controller.Library({ library: wp.media.query(), multiple: false, title: 'Choose Image', priority: 20, filterable: 'uploaded' }) ]; // Create the media frame. custom_uploader = wp.media.frames.downloadable_file = wp.media({ // Set the title of the modal. title: 'Choose Image', library: { type: '' }, button: { text: 'Choose Image' }, multiple: false, states: custom_uploader_states }); //When a file is selected, grab the URL and set it as the text field's value custom_uploader.on( 'select' , function() { var attachment = custom_uploader.state().get( 'selection' ).first().toJSON(); $("#" + id).val( attachment.url ); // Save the id of the selected element to an element which name is the same with // a suffix "-yith-attachment-id" if ($("#" + id + "-yith-attachment-id")) { $("#" + id + "-yith-attachment-id").val(attachment.id); } $('.plugin-option .upload_img_url').trigger('change'); }); //Open the uploader dialog custom_uploader.open(); }); $( document).on( 'click', '.plugin-option .upload_button_reset', function(e){ var t = $(this), id = t.attr('id'), input_id = t.attr('id').replace(/-button_reset$/, ''), default_value = $('#' + id).data('default'); $("#" + input_id).val( default_value ); $('.plugin-option .upload_img_url').trigger('change'); } ); } $('.plugin-option .add_media').on('click', function () { _custom_media = false; }); //dependencies handler $('[data-field]').each(function () { var t = $(this); var field = '#' + t.data('field'), dep = '#' + t.data('dep'), value = t.data('value'); $(dep).on('change',function () { dependencies_handler(field, dep, value.toString()); }).change(); }); //Handle dependencies. function dependencies_handler(id, deps, values) { var result = true; //Single dependency if (typeof( deps ) == 'string') { if (deps.substr(0, 6) == ':radio') { deps = deps + ':checked'; } var values = values.split(','); for (var i = 0; i < values.length; i++) { if ($(deps).val() != values[i]) { result = false; } else { result = true; break; } } } if (!result) { $(id + '-container').closest('tr').hide(); } else { $(id + '-container').closest('tr').show(); } }; //connected list $('.rm_connectedlist').each(function () { var ul = $(this).find('ul'); var input = $(this).find(':hidden'); var sortable = ul.sortable({ connectWith: ul, update : function (event, ui) { var value = {}; ul.each(function () { var options = {}; $(this).children().each(function () { options[ $(this).data('option') ] = $(this).text(); }); value[ $(this).data('list') ] = options; }); input.val((JSON.stringify(value)).replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0')); } }).disableSelection(); }); $(document).ready(function () { $('.yith-video-link').click(function (event) { event.preventDefault(); var target = $(this).data('video-id'); $('.' + target).dialog({ dialogClass : 'wp-dialog yit-dialog yit-video-dialog', modal : true, closeOnEscape: true, width : 'auto', resizable : false, draggable : false, create : function (event, ui) { $(this).css("maxWidth", "853px"); }, open : function (event, ui) { $('.ui-widget-overlay').bind('click', function () { $(this).siblings('.ui-dialog').find('.ui-dialog-content').dialog('close'); }); } }); $('.ui-dialog :button').blur(); }); }); //codemirror $(document).ready(function () { $('.codemirror').each(function (i, v) { var editor = CodeMirror.fromTextArea(v, { lineNumbers : 1, mode : 'javascript', showCursorWhenSelecting: true }) $(v).data('codemirrorInstance', editor); }) }) //google analytics generation $(document).ready(function () { $('.google-analytic-generate').click(function () { var editor = $('#' + $(this).data('textarea')).data('codemirrorInstance'); var gatc = $('#' + $(this).data('input')).val(); var basename = $(this).data('basename'); var text = "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n"; text += "(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement( o ),\n"; text += "m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n"; text += "})(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n\n"; text += "ga('create', '" + gatc + "', '" + basename + "');\n"; text += "ga('send', 'pageview');\n"; editor.replaceRange( text, editor.getCursor('start'), editor.getCursor('end') ) }) }) })(jQuery);