/** * Prints or returns an dropdown select */ static function select($name) { // $params if (func_num_args() > 1) { $params = func_get_arg(1); } if (empty($params)) { $params = array(); } // Load defaults $params += array('id' => ''); // Sanitize $params[multiple], and Add brackets if the former is true if (!empty($params['multiple'])) { $params['multiple'] = 'multiple'; $name .= '[]'; } // Add name $params['name'] = $name; // $args if (func_num_args() > 2) { $args = func_get_arg(2); } if (empty($args)) { $args = array(); } $args += array('default' => '', 'options' => array(), 'html_before' => '', 'html_after' => '', 'selected' => ''); // Make 'selected' an array if ($selected = $args['selected']) { if (!is_array($selected)) { $selected = array($selected); } } // Use 'default' is 'selected' is empty if (!$selected) { $selected = array($args['default']); } // Build options $options = ''; foreach ($args['options'] as $value => $label) { $options .= K::wrap($label, array('value' => $value, 'selected' => in_array($value, $selected) ? 'selected' : null), array('in' => 'option', 'return' => true)); } // Build the input field html $select = sprintf('%s<select %s>%s</select>%s', $args['html_before'], K::params_str($params), $options, $args['html_after']); // Format if (!empty($args['format'])) { $select = str_replace(array(':select', ':name', ':id'), array($select, $name, $params['id']), $args['format']); } // Print or return the input field HTML if (!empty($args['return'])) { return $select; } else { echo $select; } }
/** * Callback function for pages */ function paf_page_cb() { global $paf; global $paf_options, $paf_pages, $paf_sections, $paf_tabs; global $paf_page_tabs, $paf_page_sections, $paf_page_options; global $paf_page, $paf_tab; // Get submit button text (looks in: tab > page > default ) if ($paf_tab && ($submit_button_text = K::get_var('submit_button', $paf_page_tabs[$paf_tab]))) { } else { if ($submit_button_text = K::get_var('submit_button', $paf_pages[$paf_page])) { } else { $submit_button_text = __('Save Changes'); } } // Get reset button text (looks in: tab > page ) if ($paf_tab && ($reset_button_text = K::get_var('reset_button', $paf_page_tabs[$paf_tab]))) { } else { if ($reset_button_text = K::get_var('reset_button', $paf_pages[$paf_page])) { } } // Start output echo '<div class="wrap">' . '<h2>' . K::get_var('title', $paf_pages[$paf_page], $paf_page) . '</h2>'; // Print tabs links if ($paf_page_tabs) { echo '<h2 class="nav-tab-wrapper">'; foreach ($paf_page_tabs as $slug => $page_tab) { printf('<a href="?page=%s&tab=%s" class="nav-tab %s">%s</a>', $paf_page, $slug, $paf_tab === $slug ? 'nav-tab-active' : '', $page_tab['menu_title']); } echo '</h2>'; echo '<h2>' . $paf_page_tabs[$paf_tab]['title'] . '</h2>'; } // Print the options echo '<form id="paf-form" class="hidden" action="' . paf_url() . '" method="post">'; // Show options that don't have sections reset($paf_page_options); foreach ($paf_page_options as $id => $page_option) { if (K::get_var('section', $page_option)) { continue; } paf_print_option($id); } // Show options that have sections reset($paf_page_options); foreach ($paf_page_sections as $section_id => $page_section) { K::wrap(K::get_var('title', $page_section, $section_id), array('class' => 'title'), array('in' => 'h3')); foreach ($paf_page_options as $id => $page_option) { if ($section_id === K::get_var('section', $page_option)) { paf_print_option($id); } } } // Nonce wp_nonce_field('paf_save', 'paf_nonce'); // Submit and Reset buttons echo '<p>'; K::input('paf_submit', array('class' => 'button button-large button-primary', 'href' => '#', 'id' => 'paf-submit', 'type' => 'submit', 'value' => $submit_button_text), array('in' => 'input')); if ($reset_button_text) { echo ' '; K::wrap('Reset', array('class' => 'button button-large paf-reset', 'href' => '#', 'id' => 'paf-reset'), array('in' => 'a')); } echo '</p>'; echo '</form>'; // Add JS and CSS paf_asset_js('paf', TRUE); paf_asset_css('paf', TRUE); echo '</div>'; }
/** * Generate formatted and syntax highlighted dump */ function paf_option_return_dump($option_id) { global $paf_options; $option = $paf_options[$option_id]; ksort($option); array_walk_recursive($option, 'paf_htmlspecialchars_recursive'); $dump = K::wrap("\$options[ '{$option_id}' ] = " . var_export($option, true) . ';', array('class' => 'php paf-code-block'), array('html_before' => '<pre>', 'html_after' => '</pre>', 'in' => 'code', 'return' => true)); // Remove white space before 'array (' $dump = preg_replace('/=>\\s+array \\(/s', '=> array (', $dump); // Replace 2 spaces with 4 spaces $pattern = "/((?: )+)(\\d+|'|array|\\))/"; $dump = preg_replace($pattern, '\\1\\1\\2', $dump); return $dump; }
function skelet_tinyMCE_php($tag) { global $paf_shortcodes; $select2_enqueued = false; $protocol = is_ssl() ? 'https' : 'http'; // Head printf('<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title>'); // CSS printf('<link rel="stylesheet" href="%s" />', admin_url('css/common' . (is_rtl() ? '-rtl' : '') . '.css')); printf('<link rel="stylesheet" href="%s" />', admin_url('css/forms' . (is_rtl() ? '-rtl' : '') . '.css')); printf('<link rel="stylesheet" href="%s" />', site_url('wp-includes/css/dashicons' . (is_rtl() ? '-rtl' : '') . '.min.css')); printf('<link rel="stylesheet" href="%s" />', site_url('wp-includes/css/buttons' . (is_rtl() ? '-rtl' : '') . '.min.css')); print '<style>body { height: auto; margin: 0; min-width: 0; padding: 1em; }</style>'; paf_asset_css('paf'); // JS printf('<script src="%s"></script>', "{$protocol}://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"); printf('<script src="%s"></script>', "{$protocol}://cdnjs.cloudflare.com/ajax/libs/jquery.serializeJSON/1.2.0/jquery.serializeJSON.min.js"); paf_asset_js('paf'); ob_start(); ?> <script> var paf; var shortcode = ''; var wrap = <?php echo K::get_var('wrap', $paf_shortcodes[$tag]) ? 'true' : 'false'; ?> ; jQuery( document ).ready( function ( $ ) { /* Fill content field with selected text if any */ var content = parent.tinymce.activeEditor.selection.getContent( { format : 'text' } ); $( '#content' ).val( content ); // Update shortcode $( 'input,select,textarea', 'form' ).on( 'change keyup', function() { $( 'form' ).change(); } ); // Autoselect shortcode $( "#shortcode" ).mouseover( function() { $( this ).select(); } ); /** * Bind to form events * * - On submit: Fill the WP editor * - On change: update the shortcode value */ $( 'form' ).on( 'submit change', function( e ) { e.preventDefault(); shortcode = ''; paf = $( this ).serializeJSON().paf; content = $( '#content' ).val(); if( 'undefined' === typeof paf ) { paf = {}; } // Build the shortcode Object.keys( paf ).map( function(v) { if( 'undefined' !== paf[ v ] && paf[ v ] ) { shortcode += ' ' + v + '="' + paf[ v ].toString().split().join().replace( '"', '\\"', 'g' ) + '"' ; } } ); if( wrap ) { shortcode = "[<?php echo $tag; ?> " + shortcode + "]" + content + "[/<?php echo $tag; ?> ]" ; } else { shortcode = "[<?php echo $tag; ?> " + shortcode + "]"; } // Update the demo $( "#shortcode" ).val( shortcode ); // Fill the editor and close if ( 'submit' === e.type ) { parent.tinymce.activeEditor.execCommand( "mceInsertContent", false, shortcode ); parent.tinymce.activeEditor.windowManager.close( window ); } } ).change(); } ); </script> <?php print JSMin::minify(ob_get_clean()); // Close head print '</head><body class="wp-core-ui">'; // Fields $parameters = $paf_shortcodes[$tag]['parameters']; echo '<form id="paf-form" action = "">'; foreach ($parameters as $k => $v) { // Validate title $v['title'] = k::get_var('title', $v, $k); // Print option paf_print_option($k, $v); if ('select' === K::get_var('type', $v)) { printf('<link rel="stylesheet" href="%s" />', "{$protocol}://cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.min.css"); printf('<script src="%s"></script>', "{$protocol}://cdnjs.cloudflare.com/ajax/libs/select2/3.5.0/select2.js"); print "<script>jQuery( document ).ready( function( \$ ) { \$( 'select' ).select2(); } );</script>"; $select2_enqueued = true; } } // Content field if (K::get_var('wrap', $paf_shortcodes[$tag])) { K::textarea('content', array('class' => 'large-text', 'id' => 'content'), array('format' => '<p><label><strong>Content:</strong>:textarea</label></p>')); } // Buttons echo '<hr />'; echo '<p><label><strong>Shortcode:</strong><input type="text" class="large-text" id="shortcode" value=""/></label></p>'; echo '<hr />'; echo '<p>'; K::input('submit', array('class' => 'button button-large button-primary aligncenter ', 'type' => 'submit', 'value' => 'Add shortcode')); echo ' '; K::wrap('Reset', array('class' => 'button button-large paf-reset', 'href' => '#', 'id' => 'paf-reset'), array('in' => 'a')); echo '</p>'; // Close document echo '</form></body></html>'; // C ya! return ob_get_clean(); }