File "shortcodes-init.php"

Full Path: /var/www/bvnghean.vn/save_bvnghean.vn/wp-content/plugins/sneeit-framework/includes/shortcodes/shortcodes-init.php
File size: 3.95 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/*
short code must have more fields, special similar with widgets fields.
 * http://www.wpexplorer.com/wordpress-tinymce-tweaks/
 *  */

global $Sneeit_ShortCodes;
$Sneeit_ShortCodes = array();

define('SNEEIT_SHORTCODES_SCRIPT_PREFIX', 'sneeit-shortcode');

add_action('sneeit_setup_shortcodes', 'sneeit_setup_shortcodes', 1, 1);

function sneeit_setup_shortcodes($args) {
		
	if (!isset($args['declarations'])) {
		return;
	}
	global $Sneeit_ShortCodes;
	$Sneeit_ShortCodes = $args;
	
	require_once 'shortcodes-lib.php';
	
	$Sneeit_ShortCodes['declarations'] = sneeit_validate_shortcodes_declaration($Sneeit_ShortCodes['declarations']);
	
	foreach ($Sneeit_ShortCodes['declarations'] as $shortcode_id => $shortcode_declaration) {
		if (isset($shortcode_declaration['display_callback'])) {
			add_shortcode($shortcode_id, $shortcode_declaration['display_callback']);
			
			// add process for unlimited nested shortcode
			if ($shortcode_id == 'column') {
				for ($i = 0; $i < SNEEIT_MAX_NESTED_COLUMN_LEVEL; $i++) {
					add_shortcode($shortcode_id.'-'.SNEEIT_NESTED_COLUMN_SEPARATOR.'-'.$i, $shortcode_declaration['display_callback']);
				}
				
				// add filter to nested shortcode
				function parse_content_for_nested_shortcodes($content){        
					$matches=array();
					$subject = $content;
					$pattern = '/\[column.*?(\[column.*?\].*?\[\/column\])/';
					preg_match_all($pattern, $subject, $matches);
					if(count($matches)>0 && isset($matches[1])){
						foreach($matches[1] as $regmatch){
							$content = str_replace($regmatch, stripslashes(do_shortcode($regmatch)), $content);
						}
					}

					return $content;
				}
				add_filter( "the_content", 'parse_content_for_nested_shortcodes' ); 
			}
			// for nested callback
			if (isset($shortcode_declaration['nested'])) {
				foreach ($shortcode_declaration['nested'] as $nested_shortcode_id => $nested_shortcode_declaration) {
					if (isset($nested_shortcode_declaration['display_callback'])) {
						add_shortcode($nested_shortcode_id, $nested_shortcode_declaration['display_callback']);
					}
				}
			}
		}
	}
	
	include_once 'shortcodes-enqueue.php';	
	add_action( 'admin_init', 'sneeit_shortcodes_init_admin_init');
	

	/* Advance Tinymce */
	add_action( 'init', 'sneeit_advance_tinymce' );

	
}

/**
 * Advance Tinymce
 */
function sneeit_advance_tinymce(){

	/* Add the button/option in second row */
	add_filter( 'mce_buttons_2', 'sneeit_advance_tinymce_buttons', 1, 2 ); // 2nd row
}
function sneeit_advance_tinymce_buttons( $buttons, $id ){

	/* Only add this for content editor, you can remove this line to activate in all editor instance */
//	if ( 'content' != $id ) return $buttons;

	/* Add the button/option after 4th item */
	array_splice( $buttons, 4, 0, 'backcolor' );
    array_splice( $buttons, 13, 0, 'wp_page' );
    
    
    


	return $buttons;
}

// add user interface for shortcode
function sneeit_shortcodes_init_admin_init() {
	if ( current_user_can( 'edit_posts' )) { 
		add_filter( 'mce_buttons', 'sneeit_mce_shortcode_buttons' );
		add_filter( 'mce_external_plugins', 'sneeit_mce_shortcode_plugins');
	}
}

// show shortcode button on tmce
function sneeit_mce_shortcode_buttons( $buttons ) {
	global $Sneeit_ShortCodes;

	if (empty($Sneeit_ShortCodes)) {
		return;
	}
	
	if (!empty($Sneeit_ShortCodes['title'])) {
		array_push( $buttons, 'sneeit-shortcode-dropdown');
		return $buttons;
	}

	foreach ($Sneeit_ShortCodes['declarations'] as $shortcode_id => $shortcode_declaration) {
		if (isset($shortcode_declaration['icon']) && 
			isset($shortcode_declaration['display_callback']) &&
			$shortcode_id != 'column') {
			// only display shortcodes which have icon define for mce
			array_push( $buttons, $shortcode_id );
		}		
	}
	
	return $buttons;
}

function sneeit_mce_shortcode_plugins( $plugins ) {
	// this plugin file will work the magic of our button
	$plugins['sneeit_shortcodes'] = SNEEIT_PLUGIN_URL_JS . 'shortcodes.js'; /*index must use underscore*/
	return $plugins;
}

include_once 'shortcodes-ajax.php';