function porto_load_products_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    $order_by_values = porto_vc_woo_order_by();
    $order_way_values = porto_vc_woo_order_way();
    // woocommerce products
    vc_map(array('name' => "Porto " . __('Products', 'js_composer'), 'base' => 'porto_products', 'icon' => 'porto_vc_woocommerce', 'category' => __('WooCommerce', 'js_composer'), 'description' => __('Show multiple products by ID or SKU.', 'js_composer'), 'params' => array(array('type' => 'textfield', 'heading' => __('Title', 'woocommerce'), 'param_name' => 'title', 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('View mode', 'porto'), 'param_name' => 'view', 'value' => porto_vc_commons('products_view_mode'), 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('Columns', 'porto'), 'param_name' => 'columns', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'std' => '4', 'value' => porto_vc_commons('products_columns')), array('type' => 'dropdown', 'heading' => __('Column Width', 'porto'), 'param_name' => 'column_width', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'value' => porto_vc_commons('products_column_width')), array('type' => 'dropdown', 'heading' => __('Order by', 'js_composer'), 'param_name' => 'orderby', 'value' => $order_by_values, 'description' => sprintf(__('Select how to sort retrieved products. More at %s.', 'js_composer'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex page</a>')), array('type' => 'dropdown', 'heading' => __('Order way', 'js_composer'), 'param_name' => 'order', 'value' => $order_way_values, 'description' => sprintf(__('Designates the ascending or descending order. More at %s.', 'js_composer'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex page</a>')), array('type' => 'autocomplete', 'heading' => __('Products', 'js_composer'), 'param_name' => 'ids', 'settings' => array('multiple' => true, 'sortable' => true, 'unique_values' => true), 'description' => __('Enter List of Products', 'js_composer')), array('type' => 'hidden', 'param_name' => 'skus'), array('type' => 'dropdown', 'heading' => __('Add Links Position', 'porto'), 'desc' => 'Select position of add to cart, add to wishlist, quickview.', 'param_name' => 'addlinks_pos', 'value' => porto_vc_commons('products_addlinks_pos')), array('type' => 'checkbox', 'heading' => __('Show Navigation', 'porto'), 'param_name' => 'navigation', 'std' => 'yes', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), array('type' => 'checkbox', 'heading' => __('Show Pagination', 'porto'), 'param_name' => 'pagination', 'std' => 'no', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    //Filters For autocomplete param:
    //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback
    add_filter('vc_autocomplete_porto_products_ids_callback', 'porto_shortcode_products_ids_callback', 10, 1);
    // Get suggestion(find). Must return an array
    add_filter('vc_autocomplete_porto_products_ids_render', 'porto_shortcode_products_ids_render', 10, 1);
    // Render exact product. Must return an array (label,value)
    //For param: ID default value filter
    add_filter('vc_form_fields_render_field_porto_products_ids_param_value', 'porto_shortcode_products_ids_param_value', 10, 4);
    // Defines default value for param if not provided. Takes from other param value.
    if (!class_exists('WPBakeryShortCode_Porto_Products')) {
        class WPBakeryShortCode_Porto_Products extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_block_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Block", 'porto-shortcodes'), "base" => "porto_block", "category" => __("Porto", 'porto-shortcodes'), "icon" => "porto_vc_block", 'weight' => -50, "params" => array(array("type" => "label", "heading" => __("Input block id & slug name", 'porto-shortcodes'), "param_name" => "label"), array("type" => "textfield", "heading" => __("Block ID", 'porto-shortcodes'), "param_name" => "id", "admin_label" => true), array("type" => "textfield", "heading" => __("Block Slug Name", 'porto-shortcodes'), "param_name" => "name", "admin_label" => true), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Block')) {
        class WPBakeryShortCode_Porto_Block extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_recent_posts_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array('name' => "Porto " . __('Recent Posts', 'porto'), 'base' => 'porto_recent_posts', 'category' => __('Porto', 'porto'), 'icon' => 'porto_vc_recent_posts', 'weight' => -50, "params" => array(array("type" => "textfield", "heading" => __("Title", "porto"), "param_name" => "title", "admin_label" => true), array("type" => "textfield", "heading" => __("Posts Count", "porto"), "param_name" => "number", "value" => "8", "admin_label" => true), array("type" => "textfield", "heading" => __("Category IDs", "porto"), "param_name" => "cat", "value" => "", "admin_label" => true), array('type' => 'checkbox', 'heading' => __('Show Post Image', 'porto'), 'param_name' => 'show_image', 'std' => 'yes', 'value' => array(__('Yes', 'js_composer') => 'yes')), array("type" => "textfield", "heading" => __("Items to show on Desktop", "porto"), "param_name" => "items_desktop", "value" => "4"), array("type" => "textfield", "heading" => __("Items to show on Tablets", "porto"), "param_name" => "items_tablets", "value" => "3"), array("type" => "textfield", "heading" => __("Items to show on Mobile", "porto"), "param_name" => "items_mobile", "value" => "2"), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Recent_Posts')) {
        class WPBakeryShortCode_Porto_Recent_Posts extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_testimonial_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array('name' => "Porto " . __('Testimonial', 'porto'), 'base' => 'porto_testimonial', 'category' => __('Porto', 'porto'), 'icon' => 'porto_vc_testimonial', 'weight' => -50, 'params' => array(array('type' => 'textfield', 'heading' => __('Name', 'porto'), 'param_name' => 'name', 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Role', 'porto'), 'param_name' => 'role', 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Company', 'porto'), 'param_name' => 'company', 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Author Link', 'porto'), 'param_name' => 'author_url', 'admin_label' => true), array('type' => 'label', 'heading' => __('Input Photo URL or Select Photo.', 'porto'), 'param_name' => 'label'), array('type' => 'textfield', 'heading' => __('Photo URL', 'porto'), 'param_name' => 'photo_url'), array('type' => 'attach_image', 'heading' => __('Photo', 'porto'), 'param_name' => 'photo_id'), array('type' => 'textarea_html', 'holder' => 'blockquote', 'heading' => __('Quote', 'porto'), 'param_name' => 'quote', 'value' => __('<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec hendrerit vehicula est, in consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec hendrerit vehicula est, in consequat.  Donec hendrerit vehicula est, in consequat.  Donec hendrerit vehicula est, in consequat.</p>', 'porto')), array('type' => 'dropdown', 'heading' => __('View Type', 'porto'), 'param_name' => 'view', 'value' => array(__('Default', 'porto') => 'default', __('Simple', 'porto') => 'simple', __('Transparent', 'porto') => 'transparent'), 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('Color Skin', 'porto'), 'param_name' => 'color', 'value' => array(__('Normal', 'porto') => '', __('White', 'porto') => 'white'), 'dependency' => array('element' => 'view', 'value' => array('transparent')), 'admin_label' => true), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Testimonial')) {
        class WPBakeryShortCode_Porto_Testimonial extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_links_block_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Links Block", 'porto-shortcodes'), "base" => "porto_links_block", "category" => __("Porto", 'porto-shortcodes'), "icon" => "porto_vc_links_block", 'is_container' => true, 'weight' => -50, 'js_view' => 'VcColumnView', "as_parent" => array('only' => 'porto_links_item'), "params" => array(array("type" => "textfield", "heading" => __("Title", 'porto-shortcodes'), "param_name" => "title", "value" => "Navigation", "admin_label" => true), array('type' => 'checkbox', 'heading' => __('Show FontAwesome Icon', 'porto-shortcodes'), 'param_name' => 'show_icon', 'value' => array(__('Yes, please', 'js_composer') => 'true'), 'description' => ''), array('type' => 'iconpicker', 'heading' => __('Select FontAwesome Icon', 'porto-shortcodes'), 'param_name' => 'icon', 'dependency' => array('element' => 'show_icon', 'not_empty' => true)), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Links_Block')) {
        class WPBakeryShortCode_Porto_Links_Block extends WPBakeryShortCodesContainer
        {
        }
    }
}
function porto_load_links_block_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Links Block", 'porto'), "base" => "porto_links_block", "category" => __("Porto", 'porto'), "icon" => "porto_vc_links_block", 'is_container' => true, 'weight' => -50, 'js_view' => 'VcColumnView', "as_parent" => array('only' => 'porto_links_item'), "params" => array(array("type" => "textfield", "heading" => __("Title", "porto"), "param_name" => "title", "value" => "Navigation", "admin_label" => true), array('type' => 'textfield', 'heading' => __('Font Awesome Icon or Icon Class', 'porto'), 'param_name' => 'icon', 'description' => __('Input font awesome icon or icon class. You can see <a target="_blank" href="http://fortawesome.github.io/Font-Awesome/icons/">Font Awesome Icons in here</a>.', 'porto')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Links_Block')) {
        class WPBakeryShortCode_Porto_Links_Block extends WPBakeryShortCodesContainer
        {
        }
    }
}
function porto_load_section_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Section", 'porto-shortcodes'), "base" => "porto_section", "category" => __("Porto", 'porto-shortcodes'), "icon" => "porto_vc_section", 'is_container' => true, 'weight' => -50, 'js_view' => 'VcColumnView', "params" => array(array("type" => "textfield", "heading" => __("Anchor Name", 'porto-shortcodes'), "param_name" => "anchor", "admin_label" => true), array('type' => 'checkbox', 'heading' => __("Wrap as Container", 'porto-shortcodes'), 'param_name' => 'container', 'std' => 'no', 'value' => array(__('Yes', 'js_composer') => 'yes')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Section')) {
        class WPBakeryShortCode_Porto_Section extends WPBakeryShortCodesContainer
        {
        }
    }
}
function porto_load_toggles_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Toggles", 'porto-shortcodes'), "base" => "porto_toggles", "category" => __("Porto", 'porto-shortcodes'), "icon" => "porto_vc_toggles", 'is_container' => true, 'weight' => -50, 'js_view' => 'VcColumnView', "as_parent" => array('only' => 'vc_toggle'), "params" => array(array('type' => 'dropdown', 'heading' => __('Type', 'porto-shortcodes'), 'param_name' => 'type', 'value' => porto_vc_commons('toggle_type')), array('type' => 'dropdown', 'heading' => __('Size', 'porto-shortcodes'), 'param_name' => 'size', 'value' => porto_vc_commons('toggle_size')), array('type' => 'checkbox', 'heading' => __('One toggle open at a time', 'porto-shortcodes'), 'param_name' => 'one_toggle', 'value' => array(__('Yes, please', 'js_composer') => 'yes'), 'description' => ''), array('type' => 'dropdown', 'heading' => __('Skin Color', 'porto-shortcodes'), 'param_name' => 'skin', 'std' => 'custom', 'value' => porto_vc_commons('colors'), 'admin_label' => true), array('type' => 'colorpicker', 'heading' => __('Color', 'porto-shortcodes'), 'param_name' => 'color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Toggles')) {
        class WPBakeryShortCode_Porto_Toggles extends WPBakeryShortCodesContainer
        {
        }
    }
}
function porto_load_testimonial_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array('name' => "Porto " . __('Testimonial', 'porto-shortcodes'), 'base' => 'porto_testimonial', 'category' => __('Porto', 'porto-shortcodes'), 'icon' => 'porto_vc_testimonial', 'weight' => -50, 'params' => array(array('type' => 'textfield', 'heading' => __('Name', 'porto-shortcodes'), 'param_name' => 'name', 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Role', 'porto-shortcodes'), 'param_name' => 'role', 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Company', 'porto-shortcodes'), 'param_name' => 'company', 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Author Link', 'porto-shortcodes'), 'param_name' => 'author_url', 'admin_label' => true), array('type' => 'label', 'heading' => __('Input Photo URL or Select Photo.', 'porto-shortcodes'), 'param_name' => 'label'), array('type' => 'textfield', 'heading' => __('Photo URL', 'porto-shortcodes'), 'param_name' => 'photo_url'), array('type' => 'attach_image', 'heading' => __('Photo', 'porto-shortcodes'), 'param_name' => 'photo_id'), array('type' => 'textarea_html', 'heading' => __('Quote', 'porto-shortcodes'), 'param_name' => 'content', 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('View Type', 'porto-shortcodes'), 'param_name' => 'view', 'value' => array(__('Default', 'porto-shortcodes') => 'default', __('Simple', 'porto-shortcodes') => 'simple', __('Transparent', 'porto-shortcodes') => 'transparent'), 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('Style Type', 'porto-shortcodes'), 'param_name' => 'style', 'std' => '', 'value' => porto_vc_commons('testimonial_styles'), 'dependency' => array('element' => 'view', 'value' => array('default', 'transparent')), 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('Skin Color', 'porto-shortcodes'), 'param_name' => 'skin', 'std' => 'custom', 'value' => porto_vc_commons('colors'), 'dependency' => array('element' => 'style', 'value' => array('')), 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('Skin Color', 'porto-shortcodes'), 'param_name' => 'color', 'value' => array(__('Normal', 'porto-shortcodes') => '', __('White', 'porto-shortcodes') => 'white'), 'dependency' => array('element' => 'view', 'value' => array('transparent', 'simple'))), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Testimonial')) {
        class WPBakeryShortCode_Porto_Testimonial extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_concept_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Concept", 'porto-shortcodes'), "base" => "porto_concept", "category" => __("Porto", 'porto-shortcodes'), "icon" => "porto_vc_concept", 'weight' => -50, "params" => array(array('type' => 'label', 'heading' => __('Block 1', 'porto-shortcodes') . ": " . __('Input Image URL or Select Image.', 'porto-shortcodes'), 'param_name' => 'label'), array('type' => 'textfield', 'heading' => __('Title', 'porto-shortcodes'), 'param_name' => 'title1'), array('type' => 'textfield', 'heading' => __('Link', 'porto-shortcodes'), 'param_name' => 'link1'), array('type' => 'textfield', 'heading' => __('Image URL', 'porto-shortcodes'), 'param_name' => 'image1_url'), array('type' => 'attach_image', 'heading' => __('Image', 'porto-shortcodes'), 'param_name' => 'image1_id'), array('type' => 'label', 'heading' => __('Block 2', 'porto-shortcodes') . ": " . __('Input Image URL or Select Image.', 'porto-shortcodes'), 'param_name' => 'label'), array('type' => 'textfield', 'heading' => __('Title', 'porto-shortcodes'), 'param_name' => 'title2'), array('type' => 'textfield', 'heading' => __('Link', 'porto-shortcodes'), 'param_name' => 'link2'), array('type' => 'textfield', 'heading' => __('Image URL', 'porto-shortcodes'), 'param_name' => 'image2_url'), array('type' => 'attach_image', 'heading' => __('Image', 'porto-shortcodes'), 'param_name' => 'image2_id'), array('type' => 'label', 'heading' => __('Block 3', 'porto-shortcodes') . ": " . __('Input Image URL or Select Image.', 'porto-shortcodes'), 'param_name' => 'label'), array('type' => 'textfield', 'heading' => __('Title', 'porto-shortcodes'), 'param_name' => 'title3'), array('type' => 'textfield', 'heading' => __('Link', 'porto-shortcodes'), 'param_name' => 'link3'), array('type' => 'textfield', 'heading' => __('Image URL', 'porto-shortcodes'), 'param_name' => 'image3_url'), array('type' => 'attach_image', 'heading' => __('Image', 'porto-shortcodes'), 'param_name' => 'image3_id'), array('type' => 'label', 'heading' => __('Slideshow Block', 'porto-shortcodes') . ": " . __('Input Image URL or Select Image.', 'porto-shortcodes'), 'param_name' => 'label'), array('type' => 'textfield', 'heading' => __('Title', 'porto-shortcodes'), 'param_name' => 'title4'), array('type' => 'textfield', 'heading' => __('Slide #1 Link', 'porto-shortcodes'), 'param_name' => 'slide_link1'), array('type' => 'textfield', 'heading' => __('Slide #1 Image URL', 'porto-shortcodes'), 'param_name' => 'slide_image1_url'), array('type' => 'attach_image', 'heading' => __('Slide #1 Image', 'porto-shortcodes'), 'param_name' => 'slide_image1_id'), array('type' => 'textfield', 'heading' => __('Slide #2 Link', 'porto-shortcodes'), 'param_name' => 'slide_link2'), array('type' => 'textfield', 'heading' => __('Slide #2 Image URL', 'porto-shortcodes'), 'param_name' => 'slide_image2_url'), array('type' => 'attach_image', 'heading' => __('Slide #2 Image', 'porto-shortcodes'), 'param_name' => 'slide_image2_id'), array('type' => 'textfield', 'heading' => __('Slide #3 Link', 'porto-shortcodes'), 'param_name' => 'slide_link3'), array('type' => 'textfield', 'heading' => __('Slide #3 Image URL', 'porto-shortcodes'), 'param_name' => 'slide_image3_url'), array('type' => 'attach_image', 'heading' => __('Slide #3 Image', 'porto-shortcodes'), 'param_name' => 'slide_image3_id'), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Concept')) {
        class WPBakeryShortCode_Porto_Concept extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_faqs_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array('name' => "Porto " . __('FAQs', 'porto'), 'base' => 'porto_faqs', 'category' => __('Porto', 'porto'), 'icon' => 'porto_vc_faqs', 'weight' => -50, "params" => array(array("type" => "textfield", "heading" => __("Title", "porto"), "param_name" => "title", "admin_label" => true), array("type" => "textfield", "heading" => __("Category IDs", "porto"), "description" => __("comma separated list of category ids", "porto"), "param_name" => "cat", "admin_label" => true), array("type" => "textfield", "heading" => __("FAQ IDs", "porto"), "description" => __("comma separated list of faq ids", "porto"), "param_name" => "post_in"), array("type" => "textfield", "heading" => __("FAQs Count", "porto"), "param_name" => "number", "value" => '8'), array('type' => 'checkbox', 'heading' => __("Show View More", "porto"), 'param_name' => 'view_more', 'std' => 'no', 'value' => array(__('Yes', 'js_composer') => 'yes')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Faqs')) {
        class WPBakeryShortCode_Porto_Faqs extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_grid_container_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Grid Container", 'porto'), "base" => "porto_grid_container", "category" => __("Porto", 'porto'), "icon" => "porto_vc_grid_container", 'is_container' => true, 'weight' => -50, 'js_view' => 'VcColumnView', "as_parent" => array('only' => 'porto_grid_item'), "params" => array(array("type" => "textfield", "heading" => __("Gutter Size", "porto"), "param_name" => "gutter_size", "value" => "2%"), array("type" => "textfield", "heading" => __("Grid Min Size", "porto"), "param_name" => "grid_size", "value" => "0"), array("type" => "textfield", "heading" => __("Max Width", "porto"), "param_name" => "max_width", "description" => "Will be show as grid only when window width > max width.", "value" => "767px"), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Grid_Container')) {
        class WPBakeryShortCode_Porto_Grid_Container extends WPBakeryShortCodesContainer
        {
        }
    }
}
function porto_load_map_section_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Map Section", 'porto-shortcodes'), "base" => "porto_map_section", "category" => __("Porto", 'porto-shortcodes'), "icon" => "porto_vc_map_section", 'is_container' => true, 'weight' => -50, "show_settings_on_create" => false, 'js_view' => 'VcColumnView', "params" => array(array('type' => 'checkbox', 'heading' => __("Wrap as Container", 'porto-shortcodes'), 'param_name' => 'container', 'std' => 'no', 'value' => array(__('Yes', 'js_composer') => 'yes')), array('type' => 'checkbox', 'heading' => __("Change Map Image", 'porto-shortcodes'), 'param_name' => 'customize', 'value' => array(__('Yes', 'js_composer') => 'yes')), array('type' => 'attach_image', 'heading' => __('Map Image', 'porto-shortcodes'), 'param_name' => 'image', 'dependency' => array('element' => 'customize', 'not_empty' => true)), array('type' => 'textfield', 'heading' => __('Image Gap (unit: px)', 'porto-shortcodes'), 'std' => '164', 'param_name' => 'gap', 'dependency' => array('element' => 'customize', 'not_empty' => true)), array('type' => 'textfield', 'heading' => __('Content Min Height (unit: px)', 'porto-shortcodes'), 'param_name' => 'min_height', 'std' => '400', 'dependency' => array('element' => 'customize', 'not_empty' => true)), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Map_Section')) {
        class WPBakeryShortCode_Porto_Map_Section extends WPBakeryShortCodesContainer
        {
        }
    }
}
function porto_load_content_box_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Content Box", 'porto'), "base" => "porto_content_box", "category" => __("Porto", 'porto'), "icon" => "porto_vc_content_box", 'is_container' => true, 'weight' => -50, "show_settings_on_create" => false, 'js_view' => 'VcColumnView', "params" => array(array('type' => 'colorpicker', 'heading' => __('Border Top Color', 'porto'), 'param_name' => 'border_top_color', 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Border Radius', 'porto'), 'param_name' => 'border_radius', 'description' => __('Enter the border radius in px.', 'porto')), array('type' => 'textfield', 'heading' => __('Border Top Width', 'porto'), 'param_name' => 'border_top_width', 'description' => __('Enter the border top width in px.', 'porto')), array('type' => 'colorpicker', 'heading' => __('Background Gradient Top Color', 'porto'), 'param_name' => 'bg_top_color'), array('type' => 'colorpicker', 'heading' => __('Background Gradient Bottom Color', 'porto'), 'param_name' => 'bg_bottom_color'), array("type" => "dropdown", "heading" => __("Text Align", "porto"), "param_name" => "align", "value" => porto_vc_commons('align')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Content_Box')) {
        class WPBakeryShortCode_Porto_Content_Box extends WPBakeryShortCodesContainer
        {
        }
    }
}
function porto_load_portfolios_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array('name' => "Porto " . __('Portfolios', 'porto-shortcodes'), 'base' => 'porto_portfolios', 'category' => __('Porto', 'porto-shortcodes'), 'icon' => 'porto_vc_portfolios', 'weight' => -50, "params" => array(array("type" => "textfield", "heading" => __("Title", 'porto-shortcodes'), "param_name" => "title", "admin_label" => true), array("type" => "dropdown", "heading" => __("Portfolio Layout", 'porto-shortcodes'), "param_name" => "portfolio_layout", 'std' => 'timeline', "value" => porto_vc_commons('portfolio_layout'), "admin_label" => true), array("type" => "dropdown", "heading" => __("View Type", 'porto-shortcodes'), "param_name" => "view", 'dependency' => array('element' => 'portfolio_layout', 'value' => array('grid')), 'std' => '', "value" => porto_vc_commons('portfolio_grid_view')), array("type" => "dropdown", "heading" => __("Columns", 'porto-shortcodes'), "param_name" => "columns", 'dependency' => array('element' => 'portfolio_layout', 'value' => array('grid')), 'std' => '3', "value" => porto_vc_commons('portfolio_grid_columns')), array("type" => "textfield", "heading" => __("Category IDs", 'porto-shortcodes'), "description" => __("comma separated list of category ids", 'porto-shortcodes'), "param_name" => "cats", "admin_label" => true), array("type" => "textfield", "heading" => __("Portfolio IDs", 'porto-shortcodes'), "description" => __("comma separated list of portfolio ids", 'porto-shortcodes'), "param_name" => "post_in"), array("type" => "textfield", "heading" => __("Portfolios Count", 'porto-shortcodes'), "param_name" => "number", "value" => '8'), array('type' => 'checkbox', 'heading' => __("Show View More", 'porto-shortcodes'), 'param_name' => 'view_more', 'std' => 'no', 'value' => array(__('Yes', 'js_composer') => 'yes')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Portfolios')) {
        class WPBakeryShortCode_Porto_Portfolios extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_animation_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Animation", 'porto'), "base" => "porto_animation", "category" => __("Porto", 'porto'), "icon" => "porto_vc_animation", 'is_container' => true, 'weight' => -50, "show_settings_on_create" => false, 'js_view' => 'VcColumnView', "params" => array($animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Animation')) {
        class WPBakeryShortCode_Porto_Animation extends WPBakeryShortCodesContainer
        {
        }
    }
}
function porto_load_content_box_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array("name" => "Porto " . __("Content Box", 'porto-shortcodes'), "base" => "porto_content_box", "category" => __("Porto", 'porto-shortcodes'), "icon" => "porto_vc_content_box", 'is_container' => true, 'weight' => -50, 'js_view' => 'VcColumnView', "params" => array(array('type' => 'dropdown', 'heading' => __('Skin Color', 'porto-shortcodes'), 'param_name' => 'skin', 'std' => 'custom', 'value' => porto_vc_commons('colors'), 'admin_label' => true), array('type' => 'colorpicker', 'heading' => __('Border Top Color', 'porto-shortcodes'), 'param_name' => 'border_top_color', 'dependency' => array('element' => 'skin', 'value' => array('custom')), 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Border Radius', 'porto-shortcodes'), 'param_name' => 'border_radius', 'description' => __('Enter the border radius in px.', 'porto-shortcodes'), 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'textfield', 'heading' => __('Border Top Width', 'porto-shortcodes'), 'param_name' => 'border_top_width', 'description' => __('Enter the border top width in px.', 'porto-shortcodes'), 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'dropdown', 'heading' => __('Background Type', 'porto-shortcodes'), 'param_name' => 'bg_type', 'value' => porto_vc_commons('content_boxes_bg_type'), 'admin_label' => true), array('type' => 'colorpicker', 'heading' => __('Background Gradient Top Color', 'porto-shortcodes'), 'param_name' => 'bg_top_color', 'dependency' => array('element' => 'bg_type', 'value' => array('featured-boxes-custom'))), array('type' => 'colorpicker', 'heading' => __('Background Gradient Bottom Color', 'porto-shortcodes'), 'param_name' => 'bg_bottom_color', 'dependency' => array('element' => 'bg_type', 'value' => array('featured-boxes-custom'))), array("type" => "dropdown", "heading" => __("Text Align", 'porto-shortcodes'), "param_name" => "align", "value" => porto_vc_commons('align')), array('type' => 'dropdown', 'heading' => __('Style', 'porto-shortcodes'), 'param_name' => 'box_style', 'value' => porto_vc_commons('content_boxes_style'), 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('Effect', 'porto-shortcodes'), 'param_name' => 'box_effect', 'value' => porto_vc_commons('content_box_effect'), 'admin_label' => true), array('type' => 'checkbox', 'heading' => __('Show FontAwesome Icon', 'porto-shortcodes'), 'param_name' => 'show_icon', 'value' => array(__('Yes, please', 'js_composer') => 'yes'), 'description' => ''), array('type' => 'iconpicker', 'heading' => __('Select FontAwesome Icon', 'porto-shortcodes'), 'param_name' => 'icon', 'dependency' => array('element' => 'show_icon', 'not_empty' => true)), array('type' => 'colorpicker', 'heading' => __('Icon Color', 'porto-shortcodes'), 'param_name' => 'icon_color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'colorpicker', 'heading' => __('Icon Background Color', 'porto-shortcodes'), 'param_name' => 'icon_bg_color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'colorpicker', 'heading' => __('Icon Border Color', 'porto-shortcodes'), 'param_name' => 'icon_border_color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'colorpicker', 'heading' => __('Icon Wrap Border Color', 'porto-shortcodes'), 'param_name' => 'icon_wrap_border_color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'colorpicker', 'heading' => __('Icon Box Shadow Color', 'porto-shortcodes'), 'param_name' => 'icon_shadow_color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'colorpicker', 'heading' => __('Icon Hover Color', 'porto-shortcodes'), 'param_name' => 'icon_hcolor', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'colorpicker', 'heading' => __('Icon Hover Background Color', 'porto-shortcodes'), 'param_name' => 'icon_hbg_color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'colorpicker', 'heading' => __('Icon Hover Border Color', 'porto-shortcodes'), 'param_name' => 'icon_hborder_color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'colorpicker', 'heading' => __('Icon Wrap Hover Border Color', 'porto-shortcodes'), 'param_name' => 'icon_wrap_hborder_color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), array('type' => 'colorpicker', 'heading' => __('Icon Hover Box Shadow Color', 'porto-shortcodes'), 'param_name' => 'icon_hshadow_color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Content_Box')) {
        class WPBakeryShortCode_Porto_Content_Box extends WPBakeryShortCodesContainer
        {
        }
    }
}
function porto_load_tooltip_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array('name' => "Porto " . __('Tooltip', 'porto-shortcodes'), 'base' => 'porto_tooltip', 'category' => __('Porto', 'porto-shortcodes'), 'icon' => 'porto_vc_tooltip', 'weight' => -50, 'params' => array(array('type' => 'textfield', 'heading' => __('Prefix', 'porto-shortcodes'), 'param_name' => 'prefix'), array('type' => 'textfield', 'heading' => __('Text', 'porto-shortcodes'), 'param_name' => 'text', 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Suffix', 'porto-shortcodes'), 'param_name' => 'suffix'), array('type' => 'dropdown', 'heading' => __('Display Type', 'porto-shortcodes'), 'param_name' => 'display', 'value' => array(__('Inline', 'porto-shortcodes') => '', __('Block', 'porto-shortcodes') => 'block')), array('type' => 'dropdown', 'heading' => __('Text Type', 'porto-shortcodes'), 'param_name' => 'type', 'value' => array(__('Link', 'porto-shortcodes') => '', __('Button Link', 'porto-shortcodes') => 'btn-link', __('Button', 'porto-shortcodes') => 'btn')), array("type" => "textfield", "heading" => __("Link", 'porto-shortcodes'), "param_name" => "link", 'dependency' => array('element' => 'type', 'value' => array('', 'btn-link'))), array('type' => 'dropdown', 'heading' => __('Button Size', 'porto-shortcodes'), 'param_name' => 'btn_size', 'value' => porto_vc_commons('size'), 'dependency' => array('element' => 'type', 'value' => array('btn', 'btn-link'))), array('type' => 'dropdown', 'heading' => __('Button Skin Color', 'porto-shortcodes'), 'param_name' => 'btn_skin', 'value' => porto_vc_commons('colors'), 'dependency' => array('element' => 'type', 'value' => array('btn', 'btn-link'))), array('type' => 'dropdown', 'heading' => __('Button Contextual Class', 'porto-shortcodes'), 'param_name' => 'btn_context', 'value' => porto_vc_commons('contextual'), 'dependency' => array('element' => 'type', 'value' => array('btn', 'btn-link'))), array('type' => 'textfield', 'heading' => __('Tooltip Text', 'porto-shortcodes'), 'param_name' => 'tooltip_text', 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('Tooltip Position', 'porto-shortcodes'), 'param_name' => 'tooltip_position', 'value' => porto_vc_commons('position')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Tooltip')) {
        class WPBakeryShortCode_Porto_Tooltip extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_blockquote_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array('name' => "Porto " . __('Blockquote', 'porto-shortcodes'), 'base' => 'porto_blockquote', 'category' => __('Porto', 'porto-shortcodes'), 'icon' => 'porto_vc_blockquote', 'weight' => -50, 'params' => array(array('type' => 'textarea_html', 'heading' => __('Quote', 'porto-shortcodes'), 'param_name' => 'content', 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Footer Text 1', 'porto-shortcodes'), 'param_name' => 'footer_before'), array('type' => 'textfield', 'heading' => __('Footer Text 2', 'porto-shortcodes'), 'param_name' => 'footer_after'), array('type' => 'dropdown', 'heading' => __('View Type', 'porto-shortcodes'), 'param_name' => 'view', 'value' => array(__('Default', 'porto-shortcodes') => '', __('With Borders', 'porto-shortcodes') => 'with-borders')), array('type' => 'dropdown', 'heading' => __('Direction', 'porto-shortcodes'), 'param_name' => 'dir', 'value' => array(__('Default', 'porto-shortcodes') => '', __('Reverse', 'porto-shortcodes') => 'blockquote-reverse')), array('type' => 'dropdown', 'heading' => __('Skin Color', 'porto-shortcodes'), 'param_name' => 'skin', 'std' => 'custom', 'value' => porto_vc_commons('colors'), 'dependency' => array('element' => 'view', 'value' => array(''))), array('type' => 'colorpicker', 'heading' => __('Border Color', 'porto-shortcodes'), 'param_name' => 'color', 'dependency' => array('element' => 'skin', 'value' => array('custom'))), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Blockquote')) {
        class WPBakeryShortCode_Porto_Blockquote extends WPBakeryShortCode
        {
        }
    }
}
Exemple #20
0
function porto_load_history_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array('name' => "Porto " . __('History', 'porto'), 'base' => 'porto_history', 'category' => __('Porto', 'porto'), 'icon' => 'porto_vc_history', 'weight' => -50, 'params' => array(array('type' => 'textfield', 'heading' => __('Year', 'porto'), 'param_name' => 'year', 'admin_label' => true), array('type' => 'label', 'heading' => __('Input Photo URL or Select Photo.', 'porto'), 'param_name' => 'label'), array('type' => 'textfield', 'heading' => __('Photo URL', 'porto'), 'param_name' => 'image_url'), array('type' => 'attach_image', 'heading' => __('Photo', 'porto'), 'param_name' => 'image'), array('type' => 'textarea_html', 'heading' => __('History', 'porto'), 'param_name' => 'history'), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_History')) {
        class WPBakeryShortCode_Porto_History extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_recent_members_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array('name' => "Porto " . __('Recent Members', 'porto-shortcodes'), 'base' => 'porto_recent_members', 'category' => __('Porto', 'porto-shortcodes'), 'icon' => 'porto_vc_recent_members', 'weight' => -50, "params" => array(array("type" => "textfield", "heading" => __("Title", 'porto-shortcodes'), "param_name" => "title", "admin_label" => true), array("type" => "textfield", "heading" => __("Members Count", 'porto-shortcodes'), "param_name" => "number", "value" => "8", "admin_label" => true), array("type" => "textfield", "heading" => __("Category IDs", 'porto-shortcodes'), "param_name" => "cats", "value" => "", "admin_label" => true), array("type" => "textfield", "heading" => __("Items to show on Desktop", 'porto-shortcodes'), "param_name" => "items_desktop", "value" => "4"), array("type" => "textfield", "heading" => __("Items to show on Tablets", 'porto-shortcodes'), "param_name" => "items_tablets", "value" => "3"), array("type" => "textfield", "heading" => __("Items to show on Mobile", 'porto-shortcodes'), "param_name" => "items_mobile", "value" => "2"), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Recent_Members')) {
        class WPBakeryShortCode_Porto_Recent_Members extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_widget_woo_product_tags_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    // woocommerce product tag cloud
    vc_map(array('name' => __('Product Tags', 'porto') . " " . __("Widget", 'porto'), 'base' => 'porto_widget_woo_product_tags', 'icon' => 'porto_vc_woocommerce', 'category' => __('WooCommerce Widgets', 'porto'), 'class' => 'wpb_vc_wp_widget', 'weight' => -50, 'description' => __('Your most used product tags in cloud format.', 'woocommerce'), 'params' => array(array('type' => 'textfield', 'heading' => __('Title', 'woocommerce'), 'param_name' => 'title', 'value' => __('Product Tags', 'woocommerce'), 'admin_label' => true), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Widget_Woo_Product_Tags')) {
        class WPBakeryShortCode_Porto_Widget_Woo_Product_Tags extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_widget_woo_products_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    // woocommerce products widget
    vc_map(array('name' => __('Products', 'porto-shortcodes') . " " . __("Widget", 'porto-shortcodes'), 'base' => 'porto_widget_woo_products', 'icon' => 'porto_vc_woocommerce', 'category' => __('WooCommerce Widgets', 'porto-shortcodes'), 'class' => 'wpb_vc_wp_widget', 'weight' => -50, 'description' => __('Display a list of your products on your site.', 'woocommerce'), 'params' => array(array('type' => 'textfield', 'heading' => __('Title', 'woocommerce'), 'param_name' => 'title', 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Number of products to show', 'woocommerce'), 'param_name' => 'number', 'value' => 5), array('type' => 'dropdown', 'heading' => __('Show', 'woocommerce'), 'param_name' => 'show', 'value' => array(__('All Products', 'woocommerce') => '', __('Featured Products', 'woocommerce') => 'featured', __('On-sale Products', 'woocommerce') => 'onsale'), 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('Order by', 'woocommerce'), 'param_name' => 'orderby', 'value' => array(__('Date', 'woocommerce') => 'date', __('Price', 'woocommerce') => 'price', __('Random', 'woocommerce') => 'rand', __('Sales', 'woocommerce') => 'sales'), 'admin_label' => true), array('type' => 'dropdown', 'heading' => _x('Order', 'Sorting order', 'woocommerce'), 'param_name' => 'order', 'value' => array(__('DESC', 'woocommerce') => 'desc', __('ASC', 'woocommerce') => 'asc')), array('type' => 'checkbox', 'heading' => __('Hide free products', 'woocommerce'), 'param_name' => 'hide_free', 'value' => array(__('Yes', 'js_composer') => 'yes')), array('type' => 'checkbox', 'heading' => __('Show hidden products', 'woocommerce'), 'param_name' => 'show_hidden', 'value' => array(__('Yes', 'js_composer') => 'yes')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Widget_Woo_Products')) {
        class WPBakeryShortCode_Porto_Widget_Woo_Products extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_widget_woo_recent_reviews_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    // woocommerce recent reviews
    vc_map(array('name' => __('Recent Reviews', 'porto') . " " . __("Widget", 'porto'), 'base' => 'porto_widget_woo_recent_reviews', 'icon' => 'porto_vc_woocommerce', 'category' => __('WooCommerce Widgets', 'porto'), 'class' => 'wpb_vc_wp_widget', 'weight' => -50, 'description' => __('Display a list of your most recent reviews on your site.', 'woocommerce'), 'params' => array(array('type' => 'textfield', 'heading' => __('Title', 'woocommerce'), 'param_name' => 'title', 'value' => __('Recent Reviews', 'woocommerce'), 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Number of products to show', 'woocommerce'), 'param_name' => 'number', 'value' => 6), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Widget_Woo_Recent_Reviews')) {
        class WPBakeryShortCode_Porto_Widget_Woo_Recent_Reviews extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_best_selling_products_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    // woocommerce best selling products
    vc_map(array('name' => "Porto " . __('Best Selling Products', 'js_composer'), 'base' => 'porto_best_selling_products', 'icon' => 'porto_vc_woocommerce', 'category' => __('WooCommerce', 'js_composer'), 'description' => __('Show best selling products on sale', 'porto-shortcodes'), 'params' => array(array('type' => 'textfield', 'heading' => __('Title', 'woocommerce'), 'param_name' => 'title', 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('View mode', 'porto-shortcodes'), 'param_name' => 'view', 'value' => porto_vc_commons('products_view_mode'), 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Per page', 'js_composer'), 'value' => 12, 'param_name' => 'per_page', 'description' => __('The "per_page" shortcode determines how many products to show on the page', 'js_composer')), array('type' => 'dropdown', 'heading' => __('Columns', 'porto-shortcodes'), 'param_name' => 'columns', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'std' => '4', 'value' => porto_vc_commons('products_columns')), array('type' => 'dropdown', 'heading' => __('Column Width', 'porto-shortcodes'), 'param_name' => 'column_width', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'value' => porto_vc_commons('products_column_width')), array('type' => 'dropdown', 'heading' => __('Add Links Position', 'porto-shortcodes'), 'desc' => 'Select position of add to cart, add to wishlist, quickview.', 'param_name' => 'addlinks_pos', 'value' => porto_vc_commons('products_addlinks_pos')), array('type' => 'checkbox', 'heading' => __('Show Navigation', 'porto-shortcodes'), 'param_name' => 'navigation', 'std' => 'yes', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), array('type' => 'checkbox', 'heading' => __('Show Pagination', 'porto-shortcodes'), 'param_name' => 'pagination', 'std' => 'no', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Best_Selling_Products')) {
        class WPBakeryShortCode_Porto_Best_Selling_Products extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_sale_products_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    $order_by_values = porto_vc_woo_order_by();
    $order_way_values = porto_vc_woo_order_way();
    // woocommerce sale products
    vc_map(array('name' => "Porto " . __('Sale products', 'js_composer'), 'base' => 'porto_sale_products', 'icon' => 'porto_vc_woocommerce', 'category' => __('WooCommerce', 'js_composer'), 'description' => __('Show all products on sale', 'js_composer'), 'params' => array(array('type' => 'textfield', 'heading' => __('Title', 'woocommerce'), 'param_name' => 'title', 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('View mode', 'porto'), 'param_name' => 'view', 'value' => porto_vc_commons('products_view_mode'), 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Per page', 'js_composer'), 'value' => 12, 'param_name' => 'per_page', 'description' => __('The "per_page" shortcode determines how many products to show on the page', 'js_composer')), array('type' => 'dropdown', 'heading' => __('Columns', 'porto'), 'param_name' => 'columns', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'std' => '4', 'value' => porto_vc_commons('products_columns')), array('type' => 'dropdown', 'heading' => __('Column Width', 'porto'), 'param_name' => 'column_width', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'value' => porto_vc_commons('products_column_width')), array('type' => 'dropdown', 'heading' => __('Order by', 'js_composer'), 'param_name' => 'orderby', 'value' => $order_by_values, 'description' => sprintf(__('Select how to sort retrieved products. More at %s.', 'js_composer'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex page</a>')), array('type' => 'dropdown', 'heading' => __('Order way', 'js_composer'), 'param_name' => 'order', 'value' => $order_way_values, 'description' => sprintf(__('Designates the ascending or descending order. More at %s.', 'js_composer'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex page</a>')), array('type' => 'dropdown', 'heading' => __('Add Links Position', 'porto'), 'desc' => 'Select position of add to cart, add to wishlist, quickview.', 'param_name' => 'addlinks_pos', 'value' => porto_vc_commons('products_addlinks_pos')), array('type' => 'checkbox', 'heading' => __('Show Navigation', 'porto'), 'param_name' => 'navigation', 'std' => 'yes', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), array('type' => 'checkbox', 'heading' => __('Show Pagination', 'porto'), 'param_name' => 'pagination', 'std' => 'no', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Sale_Products')) {
        class WPBakeryShortCode_Porto_Sale_Products extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_product_category_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    $order_by_values = porto_vc_woo_order_by();
    $order_way_values = porto_vc_woo_order_way();
    $args = array('type' => 'post', 'child_of' => 0, 'parent' => '', 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => false, 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'number' => '', 'taxonomy' => 'product_cat', 'pad_counts' => false);
    $categories = get_categories($args);
    $product_categories_dropdown = array();
    $vc_vendor_wc = new Vc_Vendor_Woocommerce();
    $vc_vendor_wc->getCategoryChilds(0, 0, $categories, 0, $product_categories_dropdown);
    // woocommerce product category
    vc_map(array('name' => "Porto " . __('Product category', 'js_composer'), 'base' => 'porto_product_category', 'icon' => 'porto_vc_woocommerce', 'category' => __('WooCommerce', 'js_composer'), 'description' => __('Show multiple products in a category', 'js_composer'), 'params' => array(array('type' => 'textfield', 'heading' => __('Title', 'woocommerce'), 'param_name' => 'title', 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('View mode', 'porto'), 'param_name' => 'view', 'value' => porto_vc_commons('products_view_mode'), 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Per page', 'js_composer'), 'value' => 12, 'param_name' => 'per_page', 'description' => __('The "per_page" shortcode determines how many products to show on the page', 'js_composer')), array('type' => 'dropdown', 'heading' => __('Columns', 'porto'), 'param_name' => 'columns', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'std' => '4', 'value' => porto_vc_commons('products_columns')), array('type' => 'dropdown', 'heading' => __('Column Width', 'porto'), 'param_name' => 'column_width', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'value' => porto_vc_commons('products_column_width')), array('type' => 'dropdown', 'heading' => __('Order by', 'js_composer'), 'param_name' => 'orderby', 'value' => $order_by_values, 'description' => sprintf(__('Select how to sort retrieved products. More at %s.', 'js_composer'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex page</a>')), array('type' => 'dropdown', 'heading' => __('Order way', 'js_composer'), 'param_name' => 'order', 'value' => $order_way_values, 'description' => sprintf(__('Designates the ascending or descending order. More at %s.', 'js_composer'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex page</a>')), array('type' => 'dropdown', 'heading' => __('Category', 'js_composer'), 'value' => $product_categories_dropdown, 'param_name' => 'category', 'description' => __('Product category list', 'js_composer')), array('type' => 'dropdown', 'heading' => __('Add Links Position', 'porto'), 'desc' => 'Select position of add to cart, add to wishlist, quickview.', 'param_name' => 'addlinks_pos', 'value' => porto_vc_commons('products_addlinks_pos')), array('type' => 'checkbox', 'heading' => __('Show Navigation', 'porto'), 'param_name' => 'navigation', 'std' => 'yes', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), array('type' => 'checkbox', 'heading' => __('Show Pagination', 'porto'), 'param_name' => 'pagination', 'std' => 'no', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    if (!class_exists('WPBakeryShortCode_Porto_Product_Category')) {
        class WPBakeryShortCode_Porto_Product_Category extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_product_categories_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    $order_by_values = porto_vc_woo_order_by();
    $order_way_values = porto_vc_woo_order_way();
    // woocommerce product categories
    vc_map(array('name' => "Porto " . __('Product Categories', 'js_composer'), 'base' => 'porto_product_categories', 'icon' => 'porto_vc_woocommerce', 'category' => __('WooCommerce', 'js_composer'), 'description' => __('Display product categories loop', 'porto-shortcodes'), 'params' => array(array('type' => 'textfield', 'heading' => __('Title', 'woocommerce'), 'param_name' => 'title', 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('View mode', 'porto-shortcodes'), 'param_name' => 'view', 'value' => array(__('Grid', 'porto-shortcodes') => 'grid', __('Slider', 'porto-shortcodes') => 'products-slider'), 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Number', 'js_composer'), 'param_name' => 'number', 'description' => __('The `number` field is used to display the number of products.', 'js_composer')), array('type' => 'dropdown', 'heading' => __('Columns', 'porto-shortcodes'), 'param_name' => 'columns', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'std' => '4', 'value' => porto_vc_commons('products_columns')), array('type' => 'dropdown', 'heading' => __('Column Width', 'porto-shortcodes'), 'param_name' => 'column_width', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'value' => porto_vc_commons('products_column_width')), array('type' => 'dropdown', 'heading' => __('Order by', 'js_composer'), 'param_name' => 'orderby', 'value' => $order_by_values, 'description' => sprintf(__('Select how to sort retrieved products. More at %s.', 'js_composer'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex page</a>')), array('type' => 'dropdown', 'heading' => __('Order way', 'js_composer'), 'param_name' => 'order', 'value' => $order_way_values, 'description' => sprintf(__('Designates the ascending or descending order. More at %s.', 'js_composer'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex page</a>')), array('type' => 'textfield', 'heading' => __('Number', 'js_composer'), 'param_name' => 'hide_empty', 'description' => __('Hide empty', 'js_composer')), array('type' => 'autocomplete', 'heading' => __('Categories', 'js_composer'), 'param_name' => 'ids', 'settings' => array('multiple' => true, 'sortable' => true), 'description' => __('List of product categories', 'js_composer')), array('type' => 'checkbox', 'heading' => __('Hide products count', 'porto-shortcodes'), 'param_name' => 'hide_count', 'value' => array(__('Yes', 'js_composer') => 'yes')), array('type' => 'checkbox', 'heading' => __('Show Navigation', 'porto-shortcodes'), 'param_name' => 'navigation', 'std' => 'yes', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), array('type' => 'checkbox', 'heading' => __('Show Pagination', 'porto-shortcodes'), 'param_name' => 'pagination', 'std' => 'no', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    //Filters For autocomplete param:
    //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback
    add_filter('vc_autocomplete_porto_product_categories_ids_callback', 'porto_shortcode_product_categories_ids_callback', 10, 1);
    // Get suggestion(find). Must return an array
    add_filter('vc_autocomplete_porto_product_categories_ids_render', 'porto_shortcode_product_categories_ids_render', 10, 1);
    // Render exact category by id. Must return an array (label,value)
    if (!class_exists('WPBakeryShortCode_Porto_Product_Categories')) {
        class WPBakeryShortCode_Porto_Product_Categories extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_product_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    vc_map(array('name' => "Porto " . __('Product', 'js_composer'), 'base' => 'porto_product', 'icon' => 'porto_vc_woocommerce', 'category' => __('WooCommerce', 'js_composer'), 'description' => __('Show a single product by ID or SKU', 'porto-shortcodes'), 'params' => array(array('type' => 'textfield', 'heading' => __('Title', 'woocommerce'), 'param_name' => 'title', 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('View mode', 'porto-shortcodes'), 'param_name' => 'view', 'value' => porto_vc_commons('product_view_mode'), 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('Width', 'porto-shortcodes'), 'param_name' => 'column_width', 'dependency' => array('element' => 'view', 'value' => array('grid')), 'value' => porto_vc_commons('products_column_width')), array('type' => 'autocomplete', 'heading' => __('Select identificator', 'js_composer'), 'param_name' => 'id', 'description' => __('Input product ID or product SKU or product title to see suggestions', 'js_composer'), 'admin_label' => true), array('type' => 'hidden', 'param_name' => 'sku'), array('type' => 'dropdown', 'heading' => __('Add Links Position', 'porto-shortcodes'), 'desc' => 'Select position of add to cart, add to wishlist, quickview.', 'param_name' => 'addlinks_pos', 'value' => porto_vc_commons('products_addlinks_pos')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    //Filters For autocomplete param:
    //For suggestion: vc_autocomplete_[shortcode_name]_[param_name]_callback
    add_filter('vc_autocomplete_porto_product_id_callback', 'porto_shortcode_product_id_callback', 10, 1);
    // Get suggestion(find). Must return an array
    add_filter('vc_autocomplete_porto_product_id_render', 'porto_shortcode_product_id_render', 10, 1);
    // Render exact product. Must return an array (label,value)
    //For param: ID default value filter
    add_filter('vc_form_fields_render_field_porto_product_id_param_value', 'porto_shortcode_product_id_param_value', 10, 4);
    // Defines default value for param if not provided. Takes from other param value.
    if (!class_exists('WPBakeryShortCode_Porto_Product')) {
        class WPBakeryShortCode_Porto_Product extends WPBakeryShortCode
        {
        }
    }
}
function porto_load_product_attribute_shortcode()
{
    $animation_type = porto_vc_animation_type();
    $animation_duration = porto_vc_animation_duration();
    $animation_delay = porto_vc_animation_delay();
    $custom_class = porto_vc_custom_class();
    $order_by_values = porto_vc_woo_order_by();
    $order_way_values = porto_vc_woo_order_way();
    $attributes_tax = wc_get_attribute_taxonomies();
    $attributes = array();
    foreach ($attributes_tax as $attribute) {
        $attributes[$attribute->attribute_label] = $attribute->attribute_name;
    }
    // woocommerce product attribute
    vc_map(array('name' => "Porto " . __('Product Attribute', 'js_composer'), 'base' => 'porto_product_attribute', 'icon' => 'porto_vc_woocommerce', 'category' => __('WooCommerce', 'js_composer'), 'description' => __('Show products with an attribute shortcode', 'porto-shortcodes'), 'params' => array(array('type' => 'textfield', 'heading' => __('Title', 'woocommerce'), 'param_name' => 'title', 'admin_label' => true), array('type' => 'dropdown', 'heading' => __('View mode', 'porto-shortcodes'), 'param_name' => 'view', 'value' => porto_vc_commons('products_view_mode'), 'admin_label' => true), array('type' => 'textfield', 'heading' => __('Per page', 'js_composer'), 'value' => 12, 'param_name' => 'per_page', 'description' => __('The "per_page" shortcode determines how many products to show on the page', 'js_composer')), array('type' => 'dropdown', 'heading' => __('Columns', 'porto-shortcodes'), 'param_name' => 'columns', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'std' => '4', 'value' => porto_vc_commons('products_columns')), array('type' => 'dropdown', 'heading' => __('Column Width', 'porto-shortcodes'), 'param_name' => 'column_width', 'dependency' => array('element' => 'view', 'value' => array('products-slider', 'grid')), 'value' => porto_vc_commons('products_column_width')), array('type' => 'dropdown', 'heading' => __('Order by', 'js_composer'), 'param_name' => 'orderby', 'value' => $order_by_values, 'description' => sprintf(__('Select how to sort retrieved products. More at %s.', 'js_composer'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex page</a>')), array('type' => 'dropdown', 'heading' => __('Order way', 'js_composer'), 'param_name' => 'order', 'value' => $order_way_values, 'description' => sprintf(__('Designates the ascending or descending order. More at %s.', 'js_composer'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex page</a>')), array('type' => 'dropdown', 'heading' => __('Attribute', 'js_composer'), 'param_name' => 'attribute', 'value' => $attributes, 'description' => __('List of product taxonomy attribute', 'js_composer')), array('type' => 'checkbox', 'heading' => __('Filter', 'js_composer'), 'param_name' => 'filter', 'value' => array('empty' => 'empty'), 'description' => __('Taxonomy values', 'js_composer'), 'dependency' => array('element' => 'attribute', 'is_empty' => true, 'callback' => 'vc_woocommerce_product_attribute_filter_dependency_callback')), array('type' => 'dropdown', 'heading' => __('Add Links Position', 'porto-shortcodes'), 'desc' => 'Select position of add to cart, add to wishlist, quickview.', 'param_name' => 'addlinks_pos', 'value' => porto_vc_commons('products_addlinks_pos')), array('type' => 'checkbox', 'heading' => __('Show Navigation', 'porto-shortcodes'), 'param_name' => 'navigation', 'std' => 'yes', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), array('type' => 'checkbox', 'heading' => __('Show Pagination', 'porto-shortcodes'), 'param_name' => 'pagination', 'std' => 'no', 'dependency' => array('element' => 'view', 'value' => array('products-slider')), 'value' => array(__('Yes', 'js_composer') => 'yes')), $animation_type, $animation_duration, $animation_delay, $custom_class)));
    //For param: "filter" param value
    //vc_form_fields_render_field_{shortcode_name}_{param_name}_param
    add_filter('vc_form_fields_render_field_porto_product_attribute_filter_param', 'porto_shortcode_product_attribute_filter_param', 10, 4);
    // Defines default value for param if not provided. Takes from other param value.
    if (!class_exists('WPBakeryShortCode_Porto_Product_Attribute')) {
        class WPBakeryShortCode_Porto_Product_Attribute extends WPBakeryShortCode
        {
        }
    }
}