Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
save_bvnghean.vn
/
wp-content
/
plugins
/
sneeit-framework
/
js
:
shortcodes-box.js
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
function sneeit_shortcodes_esc_attr(value) { if (value == null) { return value; } value = value.toString(); return value .replace(/\[/gi, "&#91;") .replace(/]/gi, "&#93;") .replace(/"/gi, "&quot;") /*.replace(/'/gi, "&#039;")*/ .replace(/>/gi, "&gt;") .replace(/</gi, "&lt;"); } function sneeit_shortcodes_box_come_in() { var header_height = jQuery('#sneeit-shortcode-box > .header').height(); var action_height = jQuery('#sneeit-shortcode-box > .actions').height(); jQuery('#sneeit-shortcode-box').css('height', (jQuery(window).height() - 2 * header_height) + 'px'); jQuery('#sneeit-shortcode-box > .content').css('height', (jQuery(window).height() - 3 * header_height - action_height) + 'px'); // disable scroll jQuery('body').addClass('disabled-scroll'); } function sneeit_shortcodes_box_go_out(fadeout_delay) { if (typeof(fadeout_delay) == 'undefined') { fadeout_delay = 200; } // remove other things jQuery('body').removeClass('disabled-scroll').css('height', ''); if (fadeout_delay == 0) { jQuery('#sneeit-shortcode-box').remove(); jQuery('#sneeit-shortcode-box-overlay').remove(); } else { jQuery('#sneeit-shortcode-box-overlay').fadeOut(fadeout_delay); jQuery('#sneeit-shortcode-box').fadeOut(fadeout_delay, function () { jQuery('#sneeit-shortcode-box').remove(); jQuery('#sneeit-shortcode-box-overlay').remove(); }); } } // collect data to generate shortcode before out function sneeit_shortcodes_collect_data(selected_content, container_selector, separator, shortcode_id, shortcode_fields) { var shortcode = ''; // search in each container and collect data jQuery(container_selector).first().each(function(){ var the_container = jQuery(this); var content = ''; var attributes = new Object(); // insert shortcode jQuery.each(shortcode_fields, function(field_id, field_declaration) { // var field_selector = '#sneeit-shortcode-'+separator+'-'+field_id; var field_selector = '[name="sneeit-shortcode-'+separator+'-'+field_id+'"]'; var field_selector_array = '[name="sneeit-shortcode-'+separator+'-'+field_id+'[]"]'; switch (field_declaration['type']) { case 'content': case 'textarea': jQuery(the_container).find(field_selector).each(function(){ content += jQuery(this).val(); }); break; case 'checkbox': jQuery(the_container).find(field_selector).each(function(){ if (jQuery(this).is(':checked')) { attributes[field_id] = 'on'; } else { attributes[field_id] = ''; } }); break; case 'radio': attributes[field_id] = ''; jQuery(the_container).find(field_selector).each(function(){ if (jQuery(this).is(':checked')) { attributes[field_id] = jQuery(this).val(); } }); break; case 'categories' : case 'tags' : case 'users' : case 'sidebars' : case 'selects' : jQuery(the_container).find(field_selector).each(function(){ var field_value = jQuery(this).val(); if (field_value === null) { field_value = ''; } if (typeof(field_value) == 'Object' || typeof(field_value) == 'Array') { field_value = field_value.join(','); } attributes[field_id] = sneeit_shortcodes_esc_attr(field_value); }); break; default: jQuery(the_container).find(field_selector).each(function(){ var field_value = jQuery(this).val(); if (field_value === null) { field_value = ''; } attributes[field_id] = sneeit_shortcodes_esc_attr(field_value); }); break; } }); if (content == '') { content = selected_content; } // console.log(attributes); shortcode += '['+shortcode_id; if (!jQuery.isEmptyObject(attributes)) { jQuery.each(attributes, function(attribute_name, attribute_value) { shortcode += ' '+attribute_name+'="'+attribute_value+'"'; }); } shortcode += ']'+content + '[/'+shortcode_id+']'; jQuery(this).remove(); }); return shortcode; } // main function for shortcode box, add wrapper and header // the editor is for insert value when using page builder var Sneeit_Shortcode_Nested_Index = 0; function sneeit_shortcodes_box(editor, shortcode_id, shortcode_declaration) { var html = ''; // remove current shortcode box if have sneeit_shortcodes_box_go_out(); // HTML for shortcode box // ###################### // open box html += '<div id="sneeit-shortcode-box-overlay"></div>'; html += '<div id="sneeit-shortcode-box" class="sneeit-shortcode-box">'; // header html += '<div class="header">'+shortcode_declaration['title']+'<a href="javascript:void(0)" id="sneeit-shortcode-button-box-close"><span class="dashicons dashicons-no-alt"></span></a></div>'; // body content with form html += '<div class="main content"><div class="inner">'; html += '<div class="sneeit-shortcode-box-loading-icon"><i class="fa fa-spin fa-spinner"></i></div>'; // close body content of form html += '</div></div>'; // actions html += '<div class="actions">'; html += '<a href="javascript:void(0)" id="sneeit-shortcode-button-insert" class="button button-large button-primary">'+Sneeit_Shortcodes.text.insert_shortcode+'</a>'; html += '<a href="javascript:void(0)" id="sneeit-shortcode-button-cancel" class="button button-large">'+Sneeit_Shortcodes.text.cancel+'</a>'; html += '</div>'; // close box html += '</div>'; jQuery(html).appendTo(jQuery('body')); // get shortcode HTML frame from declaration jQuery.post(ajaxurl, { action: 'sneeit_shortcodes', sub_action: 'control_html', shortcode_id: shortcode_id }).done(function( data ) { jQuery('#sneeit-shortcode-box .main.content .inner').html(data); jQuery('#sneeit-shortcode-box .sneeit-control').first().addClass('first'); jQuery('#sneeit-shortcode-nested-box .sneeit-control').first().addClass('first'); // if have nested, we need to create nested ui and actions if (typeof(shortcode_declaration['nested']) !== 'undefined') { var the_pattern_html = jQuery('#sneeit-shortcode-nested-box').html(); jQuery('#sneeit-shortcode-nested-box .sneeit-shortcode-nested-box.pattern').remove(); // clone if (typeof(editor) !== 'undefined' && typeof(editor['nested']) !== 'undefined') { for (var i = 0; i < editor['nested'].length; i++) { jQuery('#sneeit-shortcode-nested-box') .append(the_pattern_html.replaceAll('__i__', Sneeit_Shortcode_Nested_Index)); Sneeit_Shortcode_Nested_Index++; } } else { // just init default jQuery('#sneeit-shortcode-nested-box') .append(the_pattern_html.replaceAll('__i__', Sneeit_Shortcode_Nested_Index)); Sneeit_Shortcode_Nested_Index++; } // Apply effects and transition for shortcode box // ############################################## jQuery('#sneeit-shortcode-nested-box').sortable().disableSelection(); // collaps / expand nested box jQuery('#sneeit-shortcode-nested-box').on('click', '.sneeit-shortcode-nested-box-close-button', function(){ var par = jQuery(this).parents('.sneeit-shortcode-nested-box'); if (par.is('.collapsed')) { par.removeClass('collapsed'); } else { par.addClass('collapsed'); } }); // remove nested jQuery('#sneeit-shortcode-nested-box').on('click', '.sneeit-shortcode-button-remove-nested', function(){ jQuery(this).parents('.sneeit-shortcode-nested-box').remove(); }); // add new nested box jQuery('#sneeit-shortcode-button-new-nested').click(function(){ jQuery('#sneeit-shortcode-nested-box').append(the_pattern_html.replaceAll('__i__', Sneeit_Shortcode_Nested_Index)); Sneeit_Shortcode_Nested_Index++; jQuery.event.trigger({type: 'sneeit_controls_init'}); jQuery('#sneeit-shortcode-nested-box').sortable().disableSelection(); }); } ///////////////////// // fill up value for shortcode (top level) ///////////////////////////////////////// if (typeof(editor) !== 'undefined') { jQuery.each(shortcode_declaration['fields'], function(field_id, field_declaration) { if (field_declaration['type'] == 'content' && editor.selection.getContent()) { field_declaration['value'] = editor.selection.getContent(); } if ('value' in field_declaration) { // convert back script tags if have field_declaration['value'] = field_declaration['value'].replaceAll('sneeit_script', 'script'); jQuery('#sneeit-shortcode-box .sneeit-control[data-key="'+field_id+'"] .sneeit-control-value').each(function(){ if (jQuery(this).is('.sneeit-control-checkbox-value')) { if (field_declaration['value']) { jQuery(this).prop('checked', true); } else { jQuery(this).prop('checked', false); } } else if (jQuery(this).is('.sneeit-control-radio-value')) { jQuery(this).filter('[value=' + field_declaration['value'] +']').attr('checked', true); } else if (jQuery(this).is('select[data-value]')) { jQuery(this).attr('data-value', field_declaration['value']); } else { jQuery(this).val(field_declaration['value']); } }); } }); } ////////////////////////////////////// // fill up value for nested shortcodes ////////////////////////////////////// if (typeof(editor) !== 'undefined' && typeof(editor['nested']) !== 'undefined' && typeof(shortcode_declaration['nested']) !== 'undefined') { for (var i = 0; i < editor['nested'].length; i++) { jQuery.each(shortcode_declaration['nested'], function (nested_shortcode_id, nested_shortcode_declaration) { jQuery.each(nested_shortcode_declaration['fields'], function (nested_shortcode_field_id, nested_shortcode_field_declaration) { jQuery('#sneeit-shortcode-nested-box .sneeit-shortcode-nested-box').eq(i).find('.sneeit-shortcode-nested-box-item-'+nested_shortcode_id+' .sneeit-control[data-key="'+nested_shortcode_field_id+'"] .sneeit-control-value').each(function(){ if (jQuery(this).is('input[type="checkbox"]')) { if (editor['nested'][i][nested_shortcode_id][nested_shortcode_field_id]) { jQuery(this).prop('checked', true); } else { jQuery(this).prop('checked', false); } } else { jQuery(this).val(editor['nested'][i][nested_shortcode_id][nested_shortcode_field_id]); } }); }); }); } } // remake field ui jQuery.event.trigger({type: 'sneeit_controls_init'}); // shortcode box button actions // ############################ jQuery('#sneeit-shortcode-button-cancel, #sneeit-shortcode-box-overlay, #sneeit-shortcode-button-box-close').click(function(){ sneeit_shortcodes_box_go_out(); }); jQuery('#sneeit-shortcode-button-insert').click(function() { // we will take action after 200ms, wating any iris color box finish toggle action jQuery('#sneeit-shortcode-box').fadeOut(200, function () { var shortcode = ''; var nested_shortcode = editor.selection.getContent(); // get nested shortcode if (typeof(shortcode_declaration['nested']) != 'undefined') { nested_shortcode = ''; var nested_length = jQuery('.sneeit-shortcode-nested-box-item').length; // must hold nested length because we will remove elements for (var i = 0; i < nested_length; i++) { jQuery.each(shortcode_declaration['nested'], function (nested_shortcode_id, nested_shortcode_declaration) { if (!jQuery.isEmptyObject(nested_shortcode_declaration['fields'])) { nested_shortcode += sneeit_shortcodes_collect_data( '', '.sneeit-shortcode-nested-box-item-'+nested_shortcode_id, 'nested-field', nested_shortcode_id, nested_shortcode_declaration['fields'] ); } else { nested_shortcode += '['+nested_shortcode_id+']'+editor.selection.getContent()+'[/'+nested_shortcode_id+']'; } }); } } shortcode = sneeit_shortcodes_collect_data( nested_shortcode, '#sneeit-shortcode-box', 'field', shortcode_id, shortcode_declaration['fields'] ); editor.execCommand('mceInsertContent', 0, shortcode); sneeit_shortcodes_box_go_out(0); }); }); jQuery('#sneeit-shortcode-box > .actions, #sneeit-shortcode-button-box-close').show(); // show the box sneeit_shortcodes_box_come_in(); jQuery(window).resize(function () { if (jQuery('#sneeit-shortcode-box').length) { sneeit_shortcodes_box_come_in(); } }); }); }