'tinyMCE_js',
'tinyMCE\.php/([a-zA-Z_][a-zA-Z0-9_-]*)' => 'tinyMCE_php&tag=$matches[1]',
);
foreach ( $rules as $regex => $redirect ) {
add_rewrite_rule(
sprintf( '^skelet/%s$', $regex )
, sprintf( 'index.php?skelet=%s', $redirect )
, 'top'
);
}
}
// Add the query_var "skelet" and "tag"
add_filter( 'query_vars', 'skelet_add_query_vars' );
function skelet_add_query_vars( $vars ) {
$vars[] = 'skelet';
$vars[] = 'tag';
return $vars;
}
// Capture requests and serve files
add_action( 'parse_request', 'skelet_sniff_requests' );
function skelet_sniff_requests() {
global $wp;
$serve = K::get_var( 'skelet', $wp->query_vars );
$tag = K::get_var( 'tag', $wp->query_vars );
switch ( $serve ) {
case 'tinyMCE_php':
$shortcode = K::get_var( $tag, $GLOBALS[ 'paf_shortcodes' ] );
// Exist if shortcode doesn't exist or doesn't have parameters
if( ! $shortcode || ! K::get_var( 'parameters', $shortcode ) ) {
exit;
}
// Show HTML for shortcode popup window
header( 'Content-Type: text/html; charset=utf-8');
die( call_user_func( 'skelet_' . $serve, $tag ) );
case 'tinyMCE_js':
header( 'Content-Type: application/javascript; charset=utf-8' );
die( call_user_func( 'skelet_' . $serve ) );
}
}
// Add buttons to WordPress editor
add_filter( 'mce_buttons', 'skelet_tinyMCE_buttons' );
function skelet_tinyMCE_buttons( $buttons ) {
$shortcodes = K::get_var( 'paf_shortcodes', $GLOBALS, array() );
return array_merge( $buttons, array_keys( $shortcodes ) );
}
// output for "skelet/tinyMCE.php/$tag"
function skelet_tinyMCE_php( $tag ) {
global $paf_shortcodes;
$select2_enqueued = false;
$protocol = is_ssl() ? 'https' : 'http';
// Head
printf( '
' );
// CSS
printf( '', admin_url( 'css/common' . ( is_rtl() ? '-rtl' : '' ) . '.css' ) );
printf( '', admin_url( 'css/forms' . ( is_rtl() ? '-rtl' : '' ) . '.css' ) );
printf( '', site_url( 'wp-includes/css/dashicons' . ( is_rtl() ? '-rtl' : '' ) . '.min.css' ) );
printf( '', site_url( 'wp-includes/css/buttons' . ( is_rtl() ? '-rtl' : '' ) . '.min.css' ) );
print( '' );
paf_asset_css( 'paf' );
// JS
printf( '', "$protocol://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js" );
printf( '', "$protocol://cdnjs.cloudflare.com/ajax/libs/jquery.serializeJSON/1.2.0/jquery.serializeJSON.min.js" );
paf_asset_js( 'paf' );
ob_start();
?>
' );
// Fields
$parameters = $paf_shortcodes[ $tag ]['parameters'];
echo '';
// C ya!
return ob_get_clean();
}
// Output for "skelet/tinyMCE.js"
function skelet_tinyMCE_js() {
global $paf_shortcodes;
$minify = true;
// Prepare a shortcodes object for JavaScript
$shortcodes = $paf_shortcodes;
foreach ( $paf_shortcodes as $tag => $settings ) {
// Is it a menu button
$shortcodes[ $tag ][ 'isMenu' ] = ( bool ) K::get_var( 'menu', $shortcodes[ $tag ] );
$shortcodes[ $tag ][ 'isMenu' ] && $shortcodes[ $tag ][ '_type' ] = 'menu';
// Or a modal window
$shortcodes[ $tag ][ 'isModal' ] = ( bool ) K::get_var( 'parameters', $shortcodes[ $tag ] );
$shortcodes[ $tag ][ 'isModal' ] && $shortcodes[ $tag ][ '_type' ] = 'modal';
$shortcodes[ $tag ][ 'parameters' ] = array();
unset( $shortcodes[ $tag ][ 'parameters' ] );
// or a normal button
0
|| $shortcodes[ $tag ][ 'isMenu' ]
|| $shortcodes[ $tag ][ 'isModal' ]
|| (
1
&& $shortcodes[ $tag ][ 'isBasic' ] = true
&& $shortcodes[ $tag ][ '_type' ] = 'basic'
);
// Get parent if any
$parent = K::get_var( 'parent', $shortcodes[ $tag ] );
if ( $parent && array_key_exists( $parent, $shortcodes )
) {
$shortcodes[ $tag ][ 'isChildOf' ] = $parent;
}
}
ob_start();
?>
/*