/home/arranoyd/magicraft/wp-content/themes/massive-dynamic/lib/shortcodes/md_tabs/map.php
<?php
/**
 * Pixflow
 */


/* -------------------------------------------------------
--------------------------Tab-----------------------------
---------------------------------------------------------*/

$tab_id_1 = ''; // 'def' . time() . '-1-' . rand( 0, 100 );
$tab_id_2 = ''; // 'def' . time() . '-2-' . rand( 0, 100 );
pixflow_map(array(
    "name" => esc_attr__('Tabs', 'massive-dynamic'),
    'base' => 'md_tabs',
    'show_settings_on_create' => false,
    'is_container' => true,
    "category" => esc_attr__("Structure", 'massive-dynamic'),
    'description' => esc_attr__('Tabbed content', 'massive-dynamic'),
    'as_parent' => array('only' => 'md_tab'),
    'params' => array(
        array(
            "type" => "md_group_title",
            "heading" => esc_attr__("Appearance", 'massive-dynamic'),
            "param_name" => "appearance_group",
            "edit_field_class" => $filedClass . "glue first last"
        ),
        array(
            "type" => "md_vc_colorpicker",

            "edit_field_class" => $filedClass . "first glue",
            "heading" => esc_attr__("Title Color", 'massive-dynamic'),
            "param_name" => "title_color",
            "value" => "rgba(255,255,255,1)",
            "opacity" => true,
            "admin_label" => false,
            "description" => esc_attr__("Enter optional tab title's color", 'massive-dynamic'),
        ),
        array(
            "type" => 'md_vc_separator',
            "param_name" => "title_color_separator" . ++$separatorCounter,
        ),
        array(
            "type" => "md_vc_colorpicker",

            "edit_field_class" => $filedClass . " glue",
            "heading" => esc_attr__("Tab Color", 'massive-dynamic'),
            "param_name" => "tab_color",
            "admin_label" => false,
            "value" => "rgba(43,42,40,1)",
            "opacity" => true,
            "description" => esc_attr__("Enter optional tab's color", 'massive-dynamic'),
        ),
        array(
            "type" => 'md_vc_separator',
            "param_name" => "tab_color_separator" . ++$separatorCounter,
        ),
        array(
            "type" => "md_vc_colorpicker",

            "edit_field_class" => $filedClass . "glue",
            "heading" => esc_attr__("Active Tab Color", 'massive-dynamic'),
            "param_name" => "tab_active_color",
            "value" => "rgba(235,78,1,1)",
            "opacity" => true,
            "admin_label" => false,
        ),
        array(
            "type" => 'md_vc_separator',
            "param_name" => "tab_color_separator" . ++$separatorCounter,
        ),
        array(
            "type" => "md_vc_colorpicker",

            "edit_field_class" => $filedClass . "glue last",
            "heading" => esc_attr__("Content BG Color", 'massive-dynamic'),
            "param_name" => "tabs_background",
            "value" => "rgba(247,247,247,1)",
            "opacity" => true,
            "admin_label" => false,
        ),
        array(
            "type" => "md_vc_description",

            "param_name" => "tabs_description",
            "admin_label" => false,
            "value" => esc_attr__("This is the general setting for tab. To customize each tab, click on them, then click on setting icon which appears under them.", 'massive-dynamic')
        ),
    ),
    'custom_markup' => '
<div class="wpb_tabs_holder wpb_holder vc_container_for_children">
<ul class="tabs_controls">
</ul>
%content%
</div>'
,
    'default_content' => '
[md_tab title="' . esc_attr__('TAB', 'massive-dynamic') . '" tab_id="' . uniqid('tab') . '"][/md_tab]
[md_tab title="' . esc_attr__('TAB', 'massive-dynamic') . '" tab_id="' . uniqid('tab') . '"][/md_tab]
',
    'js_view' => 'MdTabsView'
));

class Pixflow_PixflowShortCode_Md_Tabs extends WPBakeryShortCode
{
    static $filter_added = false;
    protected $controls_css_settings = 'out-tc vc_controls-content-widget';
    protected $controls_list = array('edit', 'clone', 'delete');

    public function __construct($settings)
    {
        parent::__construct($settings);
        if (!self::$filter_added) {
            $this->addFilter('vc_inline_template_content', 'setCustomTabId');
            self::$filter_added = true;
        }
    }

    public function contentAdmin($atts, $content = null)
    {
        $width = $custom_markup = '';
        $shortcode_attributes = array('width' => '1/1');
        foreach ($this->settings['params'] as $param) {
            if ($param['param_name'] != 'content') {
                if (isset($param['value']) && is_string($param['value'])) {
                    $shortcode_attributes[$param['param_name']] = $param['value'];
                } elseif (isset($param['value'])) {
                    $shortcode_attributes[$param['param_name']] = $param['value'];
                }
            } else if ($param['param_name'] == 'content' && $content == null) {
                $content = $param['value'];
            }
        }
        extract(shortcode_atts(
            $shortcode_attributes
            , $atts));

        // Extract tab titles

        preg_match_all('/md_tab title="([^\"]+)"(\stab_id\=\"([^\"]+)\"){0,1}/i', $content, $matches, PREG_OFFSET_CAPTURE);
        $output = '';
        $tab_titles = array();

        if (isset($matches[0])) {
            $tab_titles = $matches[0];
        }
        $tmp = '';
        if (count($tab_titles)) {
            $tmp .= '<ul class="clearfix tabs_controls">';
            foreach ($tab_titles as $tab) {
                preg_match('/title="([^\"]+)"(\stab_id\=\"([^\"]+)\"){0,1}/i', $tab[0], $tab_matches, PREG_OFFSET_CAPTURE);
                if (isset($tab_matches[1][0])) {
                    $tmp .= '<li><a href="#tab-' . (isset($tab_matches[3][0]) ? $tab_matches[3][0] : sanitize_title($tab_matches[1][0])) . '">' . $tab_matches[1][0] . '</a><span class="' . $tab_icon_class . '" ></span></li>';

                }
            }
            $tmp .= '</ul>' . "\n";
        } else {
            $output .= do_shortcode($content);
        }


        $elem = $this->getElementHolder($width);

        $iner = '';
        foreach ($this->settings['params'] as $param) {
            $custom_markup = '';
            $param_value = isset($$param['param_name']) ? $$param['param_name'] : '';
            if (is_array($param_value)) {
                // Get first element from the array
                reset($param_value);
                $first_key = key($param_value);
                $param_value = $param_value[$first_key];
            }
            $iner .= $this->singleParamHtmlHolder($param, $param_value);
        }

        if (isset($this->settings["custom_markup"]) && $this->settings["custom_markup"] != '') {
            if ($content != '') {
                $custom_markup = str_ireplace("%content%", $tmp . $content, $this->settings["custom_markup"]);
            } else if ($content == '' && isset($this->settings["default_content_in_template"]) && $this->settings["default_content_in_template"] != '') {
                $custom_markup = str_ireplace("%content%", $this->settings["default_content_in_template"], $this->settings["custom_markup"]);
            } else {
                $custom_markup = str_ireplace("%content%", '', $this->settings["custom_markup"]);
            }
            //$output .= do_shortcode($this->settings["custom_markup"]);
            $iner .= do_shortcode($custom_markup);
        }
        $elem = str_ireplace('%wpb_element_content%', $iner, $elem);
        $output = $elem;
        return $output;
    }

    public function getTabTemplate()
    {
        return '<div class="wpb_template">' . do_shortcode('[md_tab title="TAB" tab_id="" tab_icon_class=""][/md_tab]') . '</div>';
    }

    public function setCustomTabId($content)
    {
        return preg_replace('/tab\_id\=\"([^\"]+)\"/', 'tab_id="$1-' . time() . '"', $content);
    }
}

pixflow_add_params('md_tabs', pixflow_addAnimationTab('md_tabs'));