Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * AMG Tabs and tabs
- *
- * Creates tabs or accordions
- */
- if( ! defined( 'ABSPATH' ) ) { exit; } // Exit if accessed directly
- if( ! class_exists( 'amg_sc_cards', false ) )
- {
- class amg_sc_cards extends aviaShortcodeTemplate
- {
- use \aviaBuilder\traits\scNamedColors;
- use \aviaBuilder\traits\scButtonStyles;
- /**
- *
- * @var int
- */
- static protected $toggle_id = 1;
- /**
- *
- * @var int
- */
- static protected $counter = 1;
- /**
- *
- * @var int
- */
- static protected $initial = 0;
- /**
- *
- * @var array
- */
- static protected $tags = array();
- /**
- * Google search only accepts 1 Tag “FAQPage”
- *
- * @since 5.0
- * @var int
- */
- static protected $total = 0;
- /**
- *
- * @since 4.8.8
- * @var boolean
- */
- protected $in_sc_exec;
- /**
- *
- * @since 4.9
- * @var string
- */
- protected $heading_tag;
- /**
- *
- * @since 4.9
- * @var string
- */
- protected $heading_class;
- /**
- *
- * @since 4.5.5
- * @param AviaBuilder $builder
- */
- public function __construct( $builder )
- {
- $this->in_sc_exec = false;
- $this->heading_tag = '';
- $this->heading_class = '';
- parent::__construct( $builder );
- $this->_construct_scNamedColors();
- $this->_construct_scButtonStyles();
- }
- /**
- * @since 4.5.5
- */
- public function __destruct()
- {
- $this->_destruct_scNamedColors();
- $this->_destruct_scButtonStyles();
- parent::__destruct();
- }
- /**
- * Create the config array for the shortcode button
- */
- protected function shortcode_insert_button()
- {
- $this->config['version'] = '1.0';
- $this->config['self_closing'] = 'no';
- $this->config['base_element'] = 'yes';
- $this->config['name'] = __( 'Cards', 'avia_framework' );
- $this->config['tab'] = __( 'AMG Elements', 'avia_framework' );
- $this->config['icon'] = AviaBuilder::$path['imagesURL'] . 'sc-contentslider.png';
- $this->config['order'] = 270;
- $this->config['target'] = 'avia-target-insert';
- $this->config['shortcode'] = 'amg_card_container';
- $this->config['shortcode_nested'] = array( 'amg_card' );
- $this->config['tooltip'] = __( 'Creates a new Cards Layout Group', 'avia_framework' );
- $this->config['tinyMCE'] = array( 'tiny_always' => true );
- $this->config['preview'] = true;
- $this->config['disabling_allowed'] = true;
- $this->config['id_name'] = 'id';
- $this->config['id_show'] = 'yes';
- $this->config['alb_desc_id'] = 'alb_description';
- $this->config['name_item'] = __( 'AMG Card Item', 'avia_framework' );
- $this->config['tooltip_item'] = __( 'An AMG Card Item', 'avia_framework' );
- }
- protected function admin_assets()
- {
- $ver = AbstraktEnfoldExtensions::get_plugin_version();
- $developMode = AbstraktEnfoldExtensions::developMode();
- $lastmodtime = $developMode ? rand(1, 999999999) : $ver;
- //load css
- wp_enqueue_style( 'amg-cards', plugin_dir_url(__FILE__) . "cards.min.css", array( 'avia-layout' ), $lastmodtime );
- wp_enqueue_script( 'amg-cards', plugin_dir_url(__FILE__) . "cards.min.js", array( 'avia-shortcodes' ), $lastmodtime, true );
- }
- protected function extra_assets()
- {
- $ver = AbstraktEnfoldExtensions::get_plugin_version();
- $developMode = AbstraktEnfoldExtensions::developMode();
- $lastmodtime = $developMode ? rand(1, 999999999) : $ver;
- //load css
- wp_enqueue_style( 'amg-cards', plugin_dir_url(__FILE__) . "cards.css", array( 'avia-layout' ), $lastmodtime );
- wp_enqueue_script( 'amg-cards', plugin_dir_url(__FILE__) . "cards.js", array( 'avia-shortcodes' ), $lastmodtime, true );
- }
- /**
- * Popup Elements
- *
- * If this function is defined in a child class the element automatically gets an edit button, that, when pressed
- * opens a modal window that allows to edit the element properties
- *
- * @return void
- */
- protected function popup_elements()
- {
- $this->elements = array(
- array(
- 'type' => 'tab_container',
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab',
- 'name' => __( 'Content', 'avia_framework' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'toggle_container',
- 'templates_include' => array(
- $this->popup_key( 'content_amg_card' )
- ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab_close',
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab',
- 'name' => __( 'Automation', 'avia_framework' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'toggle_container',
- 'templates_include' => array(
- $this->popup_key( 'behavior_intro' ),
- $this->popup_key( 'style_behavior' )
- ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab_close',
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab',
- 'name' => __( 'Styling', 'avia_framework' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'toggle_container',
- 'templates_include' => array(
- $this->popup_key( 'styling_card_dimensions' ),
- $this->popup_key( 'styling_colors' ),
- $this->popup_key( 'styling_font_sizes' )
- ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab_close',
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab',
- 'name' => __( 'Advanced', 'avia_framework' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'toggle_container',
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => $this->popup_key( 'advanced_heading' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'screen_options_toggle',
- 'lockable' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'developer_options_toggle',
- 'args' => array( 'sc' => $this )
- ),
- array(
- 'type' => 'toggle_container_close',
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab_close',
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'element_template_selection_tab',
- 'args' => array( 'sc' => $this )
- ),
- array(
- 'type' => 'tab_container_close',
- 'nodescription' => true
- )
- );
- }
- /**
- * Create and register templates for easier maintainance
- *
- * @since 4.6.4
- */
- protected function register_dynamic_templates()
- {
- $this->register_modal_group_templates();
- /**
- * Content Tab
- * ===========
- */
- $c = array(
- array(
- 'name' => __( 'Add/Edit Card', 'avia_framework' ),
- 'desc' => __( 'Here you can add, remove and edit the tabs you want to display.', 'avia_framework' ),
- 'type' => 'modal_group',
- 'id' => 'content',
- 'modal_title' => __( 'Edit Card Element', 'avia_framework' ),
- 'editable_item' => true,
- 'lockable' => true,
- 'tmpl_set_default' => false,
- 'std' => array(
- array( 'title' => __( 'Card 1', 'avia_framework' ), 'tags' => '' ),
- array( 'title' => __( 'Card 2', 'avia_framework' ), 'tags' => '' ),
- ),
- 'subelements' => $this->create_modal()
- ),
- array(
- 'name' => __( 'Title Position', 'avia_framework' ),
- 'desc' => __( 'Select one of the 4 choices', 'avia_framework' ),
- 'id' => 'title_position',
- 'type' => 'select',
- 'std' => 'bottom',
- 'lockable' => true,
- 'subtype' => array(
- __( 'Top', 'avia_framework' ) => 'top',
- __( 'Bottom', 'avia_framework' ) => 'bottom',
- __( 'Full', 'avia_framework' ) => 'full',
- __( 'None', 'avia_framework' ) => 'none',
- )
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Cards', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'content_amg_card' ), $template );
- $c = array(
- array(
- 'name' => __( 'Hover Animation', 'avia_framework' ),
- 'desc' => __( 'Select the style of hover animation', 'avia_framework' ),
- 'id' => 'animation',
- 'type' => 'select',
- 'std' => 'up',
- 'lockable' => true,
- 'subtype' => array(
- __( 'Up', 'avia_framework' ) => 'up',
- __( 'Down', 'avia_framework' ) => 'down',
- __( 'Fade', 'avia_framework' ) => 'fade',
- __( 'Flip', 'avia_framework' ) => 'flip',
- )
- ),
- array(
- 'name' => __( 'Column Order', 'avia_framework' ),
- 'desc' => __( 'Select the column order', 'avia_framework' ),
- 'id' => 'column',
- 'type' => 'select',
- 'std' => 'row',
- 'lockable' => true,
- 'subtype' => array(
- __( 'Forward', 'avia_framework' ) => 'row',
- __( 'Reverse', 'avia_framework' ) => 'row-reverse',
- )
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Hover', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'style_behavior' ), $template );
- $c = array(
- array(
- 'name' => __( 'Intro', 'avia_framework' ),
- 'desc' => __( 'Choose to use active style class', 'avia_framework' ),
- 'id' => 'intro',
- 'type' => 'select',
- 'std' => '',
- 'lockable' => true,
- 'subtype' => AbstraktEnfoldExtensions::get_intro_animations()
- ),
- array(
- 'name' => __( 'Duration', 'avia_framework' ),
- 'desc' => __( 'Select duration of time this animation will run', 'avia_framework' ),
- 'id' => 'duration',
- 'type' => 'select',
- 'std' => 's100',
- 'lockable' => true,
- 'required' => array( 'intro', 'not', '' ),
- 'subtype' => AbstraktEnfoldExtensions::get_duration_times()
- ),
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Intro', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'behavior_intro' ), $template );
- /**
- * Styling Tab
- * ===========
- */
- $c = array(
- array(
- 'name' => __( 'Container Layout', 'avia_framework' ),
- 'desc' => __( 'Either use the widget default colors or apply some custom ones', 'avia_framework' ),
- 'id' => 'card_layout',
- 'type' => 'select',
- 'std' => '',
- 'lockable' => true,
- 'subtype' => array(
- __( 'Default', 'avia_framework' ) => '',
- __( 'Define Custom layout', 'avia_framework' ) => 'custom'
- ),
- ),
- array(
- 'name' => __( 'Container Max Width', 'avia_framework' ),
- 'desc' => __( 'Enter your minimum height for each glow in pixels', 'avia_framework' ),
- 'id' => 'max_width',
- 'type' => 'input',
- 'std' => '1400px',
- 'lockable' => true,
- 'required' => array( 'card_layout', 'equals', 'custom' )
- ),
- array(
- 'name' => __( 'Container Min Height', 'avia_framework' ),
- 'desc' => __( 'Enter your minimum height for each card in pixels', 'avia_framework' ),
- 'id' => 'min_height',
- 'type' => 'input',
- 'std' => '580px',
- 'lockable' => true,
- 'required' => array( 'card_layout', 'equals', 'custom' )
- ),
- array(
- 'name' => __( 'Column Count', 'avia_framework' ),
- 'desc' => __( 'This number will be the maximum number of cards per row.', 'avia_framework' ),
- 'id' => 'flex',
- 'type' => 'select',
- 'std' => '0 1 33.33%',
- 'lockable' => true,
- 'subtype' => array(
- __( '1', 'avia_framework' ) => '0 1 100%',
- __( '2', 'avia_framework' ) => '0 1 50%',
- __( '3', 'avia_framework' ) => '0 1 33.33%',
- __( '4', 'avia_framework' ) => '0 1 25%',
- __( '5', 'avia_framework' ) => '0 1 20%'
- ),
- 'required' => array( 'card_layout', 'equals', 'custom' )
- ),
- array(
- 'name' => __( 'Box Shadow', 'avia_framework' ),
- 'desc' => __( 'Either use the card default box shadow or apply a custom one', 'avia_framework' ),
- 'id' => 'box',
- 'type' => 'select',
- 'std' => '',
- 'lockable' => true,
- 'subtype' => array(
- __( 'Default', 'avia_framework' ) => '',
- __( 'Define Box Shadow', 'avia_framework' ) => 'custom'
- )
- ),
- array(
- 'name' => __( 'Box Shadow', 'avia_framework' ),
- 'desc' => __( 'Enter your custom box-shadow using standard CSS Syntax', 'avia_framework' ),
- 'id' => 'box-shadow',
- 'type' => 'input',
- 'std' => '0 0 3px #ccc',
- 'rgba' => true,
- 'lockable' => true,
- 'required' => array( 'box', 'equals', 'custom' ),
- ),
- array(
- 'name' => __( 'Border Radius', 'avia_framework' ),
- 'desc' => __( 'Set the border radius of the column', 'avia_framework' ),
- 'id' => 'border_radius',
- 'type' => 'multi_input',
- 'sync' => true,
- 'std' => '',
- 'lockable' => true,
- 'multi' => array(
- 'top' => __( 'Top-Left-Radius', 'avia_framework' ),
- 'right' => __( 'Top-Right-Radius', 'avia_framework' ),
- 'bottom' => __( 'Bottom-Right-Radius', 'avia_framework' ),
- 'left' => __( 'Bottom-Left-Radius', 'avia_framework' )
- )
- ),
- array(
- 'name' => __( 'Folded Corner', 'avia_framework' ),
- 'desc' => __( 'Set the border radius of the column', 'avia_framework' ),
- 'id' => 'corner',
- 'type' => 'select',
- 'std' => '',
- 'lockable' => true,
- 'subtype' => array(
- __( 'Yes', 'avia_framework' ) => 'yes',
- __( 'No', 'avia_framework' ) => 'no'
- )
- ),
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Container', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'styling_card_dimensions' ), $template );
- $c = array(
- array(
- 'name' => __( 'Colors', 'avia_framework' ),
- 'desc' => __( 'Either use the themes default colors or apply some custom ones', 'avia_framework' ),
- 'id' => 'colors',
- 'type' => 'select',
- 'std' => '',
- 'lockable' => true,
- 'subtype' => array(
- __( 'Default', 'avia_framework' ) => '',
- __( 'Define Custom Colors', 'avia_framework' ) => 'custom'
- )
- ),
- array(
- 'name' => __( 'Title Font Color', 'avia_framework' ),
- 'desc' => __( 'Select a custom color for the toggle icon. Leave empty to use default', 'avia_framework' ),
- 'id' => 'title_font_color',
- 'type' => 'colorpicker',
- 'std' => '',
- 'rgba' => true,
- 'lockable' => true,
- 'required' => array( 'colors', 'equals', 'custom' ),
- 'container_class' => 'av_third av_third_first',
- ),
- array(
- 'name' => __( 'Title Background Color', 'avia_framework' ),
- 'desc' => __( 'Select a custom color for the toggle icon. Leave empty to use default', 'avia_framework' ),
- 'id' => 'title_bg_color',
- 'type' => 'colorpicker',
- 'std' => '',
- 'rgba' => true,
- 'lockable' => true,
- 'required' => array( 'colors', 'equals', 'custom' ),
- 'container_class' => 'av_third av_third_last',
- ),
- array(
- 'name' => __( 'Content Font Color', 'avia_framework' ),
- 'desc' => __( 'Select a custom font color. Leave empty to use the default', 'avia_framework' ),
- 'id' => 'font_color',
- 'type' => 'colorpicker',
- 'std' => '',
- 'rgba' => true,
- 'lockable' => true,
- 'required' => array( 'colors', 'equals', 'custom' ),
- 'container_class' => 'av_third av_third_first'
- ),
- array(
- 'name' => __( 'Background Color', 'avia_framework' ),
- 'desc' => __( 'Select a custom background color. Leave empty to use the default', 'avia_framework' ),
- 'id' => 'background_color',
- 'type' => 'colorpicker',
- 'std' => '',
- 'rgba' => true,
- 'lockable' => true,
- 'required' => array( 'colors', 'equals', 'custom' ),
- 'container_class' => 'av_third',
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Colors', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'styling_colors' ), $template );
- $c = array(
- array(
- 'name' => __( 'Title Font Sizes', 'avia_framework' ),
- 'desc' => __( 'Select a custom font size for the toggle title. Using non default values might need CSS styling.', 'avia_framework' ),
- 'type' => 'template',
- 'template_id' => 'font_sizes_icon_switcher',
- 'lockable' => true,
- 'textfield' => true,
- 'subtype' => array(
- 'default' => AviaHtmlHelper::number_array( 10, 50, 1, array( __( 'Use Default', 'avia_framework' ) => '' ), 'px' ),
- 'desktop' => AviaHtmlHelper::number_array( 10, 50, 1, array( __( 'Use Default', 'avia_framework' ) => '' ), 'px' ),
- 'medium' => AviaHtmlHelper::number_array( 10, 40, 1, array( __( 'Use Default', 'avia_framework' ) => '', __( 'Hidden', 'avia_framework' ) => 'hidden' ), 'px' ),
- 'small' => AviaHtmlHelper::number_array( 10, 40, 1, array( __( 'Use Default', 'avia_framework' ) => '', __( 'Hidden', 'avia_framework' ) => 'hidden' ), 'px' ),
- 'mini' => AviaHtmlHelper::number_array( 10, 40, 1, array( __( 'Use Default', 'avia_framework' ) => '', __( 'Hidden', 'avia_framework' ) => 'hidden' ), 'px' )
- ),
- 'id_sizes' => array(
- 'default' => 'size-title',
- 'desktop' => 'av-desktop-font-size-toggle',
- 'medium' => 'av-medium-font-size-toggle',
- 'small' => 'av-small-font-size-toggle',
- 'mini' => 'av-mini-font-size-toggle'
- )
- ),
- array(
- 'name' => __( 'Content Font Sizes', 'avia_framework' ),
- 'desc' => __( 'Select a custom font size for the content.', 'avia_framework' ),
- 'type' => 'template',
- 'template_id' => 'font_sizes_icon_switcher',
- 'lockable' => true,
- 'textfield' => true,
- 'subtype' => array(
- 'default' => AviaHtmlHelper::number_array( 10, 50, 1, array( __( 'Use Default', 'avia_framework' ) => '' ), 'px' ),
- 'desktop' => AviaHtmlHelper::number_array( 10, 50, 1, array( __( 'Use Default', 'avia_framework' ) => '' ), 'px' ),
- 'medium' => AviaHtmlHelper::number_array( 10, 40, 1, array( __( 'Use Default', 'avia_framework' ) => '', __( 'Hidden', 'avia_framework' ) => 'hidden' ), 'px' ),
- 'small' => AviaHtmlHelper::number_array( 10, 40, 1, array( __( 'Use Default', 'avia_framework' ) => '', __( 'Hidden', 'avia_framework' ) => 'hidden' ), 'px' ),
- 'mini' => AviaHtmlHelper::number_array( 10, 40, 1, array( __( 'Use Default', 'avia_framework' ) => '', __( 'Hidden', 'avia_framework' ) => 'hidden' ), 'px' )
- ),
- 'id_sizes' => array(
- 'default' => 'size-content',
- 'desktop' => 'av-desktop-font-size-content',
- 'medium' => 'av-medium-font-size-content',
- 'small' => 'av-small-font-size-content',
- 'mini' => 'av-mini-font-size-content'
- )
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Font Sizes', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'styling_font_sizes' ), $template );
- /**
- * Advanced Tab
- * ============
- */
- $c = array(
- array(
- 'type' => 'template',
- 'template_id' => 'heading_tag',
- 'theme_default' => 'p',
- 'name' => __( 'Tab Title Tag (Theme Default is <%s>)', 'avia_framework' ),
- 'desc' => __( 'Select a html tag for the toggle titles of this element.', 'avia_framework' ),
- 'context' => __CLASS__,
- 'lockable' => true
- ),
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Tab Titles', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'advanced_heading' ), $template );
- }
- /**
- * Creates the modal popup for a single entry
- *
- * @since 4.6.4
- * @return array
- */
- protected function create_modal()
- {
- $elements = array(
- array(
- 'type' => 'tab_container',
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab',
- 'name' => __( 'Content', 'avia_framework' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'toggle_container',
- 'templates_include' => array(
- $this->popup_key( 'modal_card_title' ),
- $this->popup_key( 'modal_card_image' ),
- $this->popup_key( 'modal_card_content' )
- ),
- ),
- array(
- 'type' => 'tab_close',
- 'nodescription' => true
- ),
- ///////////////////////////// BUTTON START //////////////////////////////
- array(
- 'type' => 'tab',
- 'name' => __( 'Button', 'avia_framework' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'toggle_container',
- 'templates_include' => array(
- $this->popup_key( 'modal_button' ),
- $this->popup_key( 'modal_button_link' ),
- $this->popup_key( 'styling_button_appearance' ),
- $this->popup_key( 'styling_button_fonts' ),
- $this->popup_key( 'styling_button_margin_padding' ),
- $this->popup_key( 'styling_button_colors' ),
- 'border_toggle',
- 'box_shadow_toggle',
- $this->popup_key( 'advanced_button_animation' )
- ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab_close',
- 'nodescription' => true
- ),
- ///////////////////////////// BUTTON END ////////////////////////////////
- array(
- 'type' => 'tab',
- 'name' => __( 'Advanced', 'avia_framework' ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'toggle_container',
- 'templates_include' => array(
- $this->popup_key( 'modal_advanced_developer' )
- ),
- 'nodescription' => true
- ),
- array(
- 'type' => 'tab_close',
- 'nodescription' => true
- ),
- array(
- 'type' => 'template',
- 'template_id' => 'element_template_selection_tab',
- 'args' => array(
- 'sc' => $this,
- 'modal_group' => true
- )
- ),
- array(
- 'type' => 'tab_container_close',
- 'nodescription' => true
- )
- );
- return $elements;
- }
- /**
- * Register all templates for the modal group popup
- *
- * @since 4.6.4
- */
- protected function register_modal_group_templates()
- {
- /**
- * Content Tab
- * ===========
- */
- $c = array(
- array(
- 'name' => __( 'Card Title', 'avia_framework' ),
- 'desc' => __( 'Enter the card title here (Better keep it short)', 'avia_framework' ),
- 'id' => 'title',
- 'type' => 'input',
- 'std' => 'Tab Title',
- 'lockable' => true,
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Title', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'modal_card_title' ), $template );
- $c = array(
- array(
- 'name' => __( 'Card Image', 'avia_framework' ),
- 'desc' => __( 'Either upload a new, or choose an existing image from your media library', 'avia_framework' ),
- 'id' => 'src',
- 'type' => 'image',
- 'title' => __( 'Insert Image', 'avia_framework' ),
- 'button' => __( 'Insert', 'avia_framework' ),
- 'std' => AviaBuilder::$path['imagesURL'] . 'placeholder.jpg',
- 'lockable' => true,
- 'locked' => array( 'src', 'attachment', 'attachment_size' )
- ),
- array(
- 'name' => __( 'Image Position', 'avia_framework' ),
- 'desc' => __( 'Either upload a new, or choose an existing image from your media library', 'avia_framework' ),
- 'id' => 'image_position',
- 'type' => 'select',
- 'std' => 'bottom',
- 'lockable' => true,
- 'locked' => array( 'src', 'attachment', 'attachment_size' ),
- 'subtype' => array(
- __( 'Top', 'avia_framework' ) => 'top',
- __( 'Bottom', 'avia_framework' ) => 'bottom',
- __( 'Above', 'avia_framework' ) => 'above',
- __( 'Below', 'avia_framework' ) => 'below',
- )
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Image', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'modal_card_image' ), $template );
- $c = array(
- array(
- 'name' => __( 'Card Content', 'avia_framework' ),
- 'desc' => __( 'Enter some content here', 'avia_framework' ),
- 'id' => 'content',
- 'type' => 'tiny_mce',
- 'std' => __( 'Tab Content goes here', 'avia_framework' ),
- 'lockable' => true,
- ),
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Content', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'modal_card_content' ), $template );
- ///////////////////////////// BUTTON START ////////////////////////////// BUTTON START ////////////////////////////////
- $template = AbstraktEnfoldExtensions::amg_enfold_section('Button');
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'modal_button' ), $template );
- $template = AbstraktEnfoldExtensions::amg_enfold_section('Link Settings');
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'modal_button_link' ), $template );
- $template = AbstraktEnfoldExtensions::amg_enfold_section('Appearance');
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'styling_button_appearance' ), $template );
- $template = AbstraktEnfoldExtensions::amg_enfold_section('Font Sizes');
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'styling_button_fonts' ), $template );
- $c = AbstraktEnfoldExtensions::amg_enfold_section('Button Margin And Padding');
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'styling_button_margin_padding' ), $c );
- $template = AbstraktEnfoldExtensions::amg_enfold_section('Colors');
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'styling_button_colors' ), $template );
- $template = AbstraktEnfoldExtensions::amg_enfold_section('Animation');
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'advanced_button_animation' ), $template );
- ///////////////////////////// BUTTON END ////////////////////////////// BUTTON END ////////////////////////////////
- $setting_id = Avia_Builder()->get_developer_settings( 'custom_id' );
- $class = in_array( $setting_id, array( 'deactivate', 'hide' ) ) ? 'avia-hidden' : '';
- $c = array(
- array(
- 'name' => __( 'For Developers: Custom Tab ID','avia_framework' ),
- 'desc' => __( 'Insert a custom ID for the element here. Make sure to only use allowed characters (latin characters, underscores, dashes and numbers, no special characters can be used)','avia_framework' ),
- 'id' => 'custom_id',
- 'type' => 'input',
- 'std' => '',
- 'container_class' => $class,
- )
- );
- $template = array(
- array(
- 'type' => 'template',
- 'template_id' => 'toggle',
- 'title' => __( 'Developer Settings', 'avia_framework' ),
- 'content' => $c
- ),
- );
- AviaPopupTemplates()->register_dynamic_template( $this->popup_key( 'modal_advanced_developer' ), $template );
- }
- /**
- * Editor Sub Element - this function defines the visual appearance of an element that is displayed within a modal window and on click opens its own modal window
- * Works in the same way as Editor Element
- *
- * @param array $params holds the default values for $content and $args.
- * @return array usually holds an innerHtml key that holds item specific markup.
- */
- public function editor_sub_element( $params )
- {
- $default = array();
- $locked = array();
- $attr = $params['args'];
- Avia_Element_Templates()->set_locked_attributes( $attr, $this, $this->config['shortcode_nested'][0], $default, $locked );
- $template = $this->update_option_lockable( 'title', $locked );
- $params['innerHtml'] = '';
- $params['innerHtml'] .= "<div class='avia_title_container' {$template} data-update_element_template='yes'>{$attr['title']}</div>";
- return $params;
- }
- /**
- * Create custom stylings
- *
- * @since 4.8.4
- * @param array $args
- * @return array
- */
- protected function get_element_styles( array $args )
- {
- $result = parent::get_element_styles( $args );
- extract( $result );
- $default = array(
- 'faq_markup' => '',
- 'styling' => '',
- 'colors' => '',
- 'border_color' => '',
- 'title_font_color' => '',
- 'title_background_color' => '',
- 'font_color' => '',
- 'background_color' => '',
- 'background_title_color' => '',
- );
- $default = $this->sync_sc_defaults_array( $default, 'no_modal_item', 'no_content' );
- $locked = array();
- Avia_Element_Templates()->set_locked_attributes( $atts, $this, $shortcodename, $default, $locked, $content );
- Avia_Element_Templates()->add_template_class( $meta, $atts, $default );
- $meta = aviaShortcodeTemplate::set_frontend_developer_heading_tag( $atts, $meta );
- $this->in_sc_exec = true;
- $atts = shortcode_atts( $default, $atts, $this->config['shortcode'] );
- // set heading tag for all titles - save global
- $default_heading = ! empty( $meta['heading_tag'] ) ? $meta['heading_tag'] : 'h3';
- $args = array(
- 'heading' => $default_heading,
- 'extra_class' => $meta['heading_class']
- );
- $extra_args = array( $this, $atts, $content, 'title' );
- /**
- * @since 4.9
- * @return array
- */
- $args = apply_filters( 'avf_customize_heading_settings', $args, __CLASS__, $extra_args );
- $this->heading_tag = ! empty( $args['heading'] ) ? $args['heading'] : $default_heading;
- $this->heading_class = ! empty( $args['extra_class'] ) ? $args['extra_class'] : $meta['heading_class'];
- $element_styling->create_callback_styles( $atts );
- $classes = array(
- 'cardContainer',
- $element_id,
- $atts['styling']
- );
- $element_styling->add_classes( 'item_container', $classes );
- $element_styling->add_classes_from_array( 'item_container', $meta, 'el_class' );
- $element_styling->add_responsive_classes( 'item_container', 'hide_element', $atts );
- $element_styling->add_responsive_font_sizes( 'title', 'size-title', $atts, $this );
- $element_styling->add_responsive_font_sizes( 'title', 'size-title', $atts, $this );
- $element_styling->add_responsive_font_sizes( 'toggle-content', 'size-content', $atts, $this );
- if ($atts['card_layout'] == 'custom') {
- $element_styling->add_styles( 'item_container', array(
- 'max-width' => $atts['max_width'],
- ) );
- $element_styling->add_styles( 'column', array(
- 'flex' => str_replace(',', ' ', $atts['flex']),
- ) );
- $element_styling->add_styles( 'border', array(
- 'border-radius' => str_replace(',', ' ', $atts['border_radius']),
- ) );
- }
- if( 'custom' == $atts['colors'] )
- {
- $element_styling->add_styles( 'content', array(
- 'color' => $atts['font_color'],
- ) );
- $element_styling->add_styles( 'title', array(
- 'color' => $atts['title_font_color'],
- ));
- $element_styling->add_styles( 'tBackground', array(
- 'background-color' => $atts['title_bg_color'],
- ));
- $element_styling->add_styles( 'flip', array(
- 'box-shadow' => $atts['box-shadow'],
- ));
- }
- if ($atts['corner'] != 'yes') {
- $element_styling->add_styles( 'corner', array(
- 'border-style' => 'none',
- ));
- }
- // #top needed when placed inside section
- $selectors = array(
- 'column' => "#top #wrap_all .cardContainer.{$element_id} .amg-flex-box .amg-flex-column",
- 'item_container' => "#top #wrap_all .cardContainer.{$element_id}",
- 'title' => "#top #wrap_all .cardContainer.{$element_id} .amg-card-container {$this->heading_tag}.amg-card-title",
- 'content' => "#top #wrap_all .cardContainer.{$element_id} .amg-card-container .amg-card-content",
- 'contentTitle' => "#top #wrap_all .cardContainer.{$element_id} .amg-card-container {$this->heading_tag}.amg-card-content-title",
- 'tBackground' => "#top #wrap_all .cardContainer.{$element_id} .amg-card-container .card-title-container",
- 'flip' => "#top #wrap_all .cardContainer.{$element_id} .amg-card-container .amg-flip-box",
- 'border' => "#top #wrap_all .cardContainer.{$element_id} .amg-card-container .amg-flip-box,
- #top #wrap_all .cardContainer.{$element_id} .amg-card-container,
- #top #wrap_all .cardContainer.{$element_id} .amg-card-container .amg-card-content,
- #top #wrap_all .cardContainer.{$element_id} .amg-card-container .amg-card-image,
- #top #wrap_all .cardContainer.{$element_id} .amg-card-container .card-title-container",
- 'corner' => "#top #wrap_all .cardContainer.{$element_id} .amg-card-container .card-title-container:before "
- );
- $element_styling->add_selectors( $selectors );
- $result['default'] = $default;
- $result['atts'] = $atts;
- $result['content'] = $content;
- $result['meta'] = $meta;
- $result['element_styling'] = $element_styling;
- $this->parent_atts = $atts;
- amg_sc_cards::$initial = $atts['initial'];
- amg_sc_cards::$tags = array();
- $this->el_styling = $element_styling;
- return $result;
- }
- /**
- * Create custom stylings for items
- *
- * @since 4.8.4
- * @param array $args
- * @return array
- */
- protected function get_element_styles_item( array $args )
- {
- $result = parent::get_element_styles_item( $args );
- /**
- * Fixes a problem when 3-rd party plugins call nested shortcodes without executing main shortcode (like YOAST in wpseo-filter-shortcodes)
- */
- if( ! $this->in_sc_exec )
- {
- return $result;
- }
- extract( $result );
- $default = array(
- 'title' => '',
- 'tags' => '',
- 'custom_id' => '',
- 'custom_markup' => ''
- );
- $default = $this->sync_sc_defaults_array( $default, 'modal_item', 'no_content' );
- $locked = array();
- Avia_Element_Templates()->set_locked_attributes( $atts, $this, $shortcodename, $default, $locked, $content );
- $classes = array(
- 'card',
- $element_id
- );
- $element_styling->add_classes( 'item_container', $classes );
- $element_styling->add_classes( 'item_container', $this->class_by_arguments( 'icon_select, size, position', $atts, true, 'array' ) );
- $element_styling->add_responsive_classes( 'item_container', 'hide_element', $atts );
- $element_styling->add_responsive_font_sizes( 'container', 'size-content', $atts, $this );
- $this->set_button_styes( $element_styling, $atts );
- ///////////////////////////// BUTTON START ////////////////////////////// BUTTON START ////////////////////////////////
- if( $atts['icon_select'] == 'yes' )
- {
- $atts['icon_select'] = 'yes-left-icon';
- }
- $classes = array(
- 'avia-button',
- $element_id
- );
- $element_styling->add_classes( 'container', $classes );
- $element_styling->add_classes( 'container', $this->class_by_arguments( 'button_icon_select, size, position', $atts, true, 'array' ) );
- $element_styling->add_responsive_classes( 'container', 'hide_element', $atts );
- $element_styling->add_responsive_font_sizes( 'container', 'size-text', $atts, $this );
- $element_styling->add_responsive_font_sizes( 'button_icon', 'size-button-icon', $atts, $this );
- $element_styling->add_classes( 'wrap', $element_id . '-wrap' );
- $this->set_button_styes( $element_styling, $atts );
- if( ! empty( $atts['css_position'] ) )
- {
- $element_styling->add_responsive_styles( 'wrap', 'css_position', $atts, $this );
- }
- $element_styling->add_responsive_styles( 'container', 'margin', $atts, $this );
- $element_styling->add_responsive_styles( 'container', 'padding', $atts, $this );
- if( ! in_array( $atts['animation'], array( 'no-animation', '' ) ) )
- {
- if( false !== strpos( $atts['animation'], 'curtain-reveal-' ) )
- {
- $classes_curtain = array(
- 'avia-curtain-reveal-overlay',
- 'av-animated-when-visible-95',
- 'animate-all-devices',
- $atts['animation']
- );
- // animate in preview window
- if( is_admin() )
- {
- $classes_curtain[] = 'avia-animate-admin-preview';
- }
- $element_styling->add_classes( 'curtain', $classes_curtain );
- $element_styling->add_callback_styles( 'curtain', array( 'animation' ) );
- }
- else
- {
- $wrap_classes = array(
- 'avia_animated_button',
- 'av-animated-when-visible-95',
- // 'animate-all-devices',
- $atts['animation']
- );
- if( is_admin() )
- {
- $wrap_classes[] = 'avia-animate-admin-preview';
- $element_styling->add_callback_styles( 'wrap', array( 'animation' ) );
- }
- else
- {
- $element_styling->add_callback_styles( 'wrap-animation', array( 'animation' ) );
- }
- $element_styling->add_classes( 'wrap', $wrap_classes );
- }
- }
- ///////////////////////////// BUTTON END //////////////////////////////// BUTTON END //////////////////////////////////
- $selectors = array(
- 'item_container' => ".cardContainer .amg-card-container.{$element_id}",
- 'content' => ".cardContainer .amg-card-container.{$element_id} .amg-card-content"
- );
- ///////////////////////////// BUTTON START ////////////////////////////// BUTTON START ////////////////////////////////
- $selectors = AbstraktEnfoldExtensions::amg_button_append_selectors($selectors, $element_id);
- ///////////////////////////// BUTTON END //////////////////////////////// BUTTON END //////////////////////////////////
- $element_styling->add_selectors( $selectors );
- $result['default'] = $default;
- $result['atts'] = $atts;
- $result['content'] = $content;
- $result['element_styling'] = $element_styling;
- return $result;
- }
- /**
- * Frontend Shortcode Handler
- *
- * @param array $atts array of attributes
- * @param string $content text within enclosing form of shortcode element
- * @param string $shortcodename the shortcode found, when == callback name
- * @return string $output returns the modified html string
- */
- public function shortcode_handler( $atts, $content = '', $shortcodename = '', $meta = '' )
- {
- $result = $this->get_element_styles( compact( array( 'atts', 'content', 'shortcodename', 'meta' ) ) );
- extract( $result );
- extract( $atts );
- $this->subitem_inline_styles = '';
- amg_sc_cards::$counter = 1;
- $content = ShortcodeHelper::avia_remove_autop( $content, true );
- $style_tag = $element_styling->get_style_tag( $element_id );
- $item_tag = $element_styling->style_tag_html( $this->subitem_inline_styles, 'sub-' . $element_id );
- $container_class = $element_styling->get_class_string( 'item_container' );
- $class = $atts['animation'];
- $class .= " {$atts['title_position']}";
- $output = '';
- $output .= $style_tag;
- $output .= $item_tag;
- $output .= "<div id='app' data-animated='{$atts['intro']}' data-duration='{$atts['duration']}' data-height='{$atts['min_height']}' data-mobile-height='{$atts['mobile_min_height']}' {$meta['custom_el_id']} class='{$container_class} {$class}' {$markup_faq}>";
- $output .= "<div class='amg-flex-box'>";
- $output .= $content;
- $output .= '</div>';
- $output .= '</div>';
- $this->in_sc_exec = false;
- return $output;
- }
- /**
- * Shortcode handler
- *
- * @param array $atts
- * @param string $content
- * @param string $shortcodename
- * @return string
- */
- public function amg_card( $atts, $content = '', $shortcodename = '' )
- {
- /**
- * Fixes a problem when 3-rd party plugins call nested shortcodes without executing main shortcode (like YOAST in wpseo-filter-shortcodes)
- */
- if( ! $this->in_sc_exec )
- {
- return '';
- }
- $result = $this->get_element_styles_item( compact( array( 'atts', 'content', 'shortcodename' ) ) );
- extract( $result );
- $toggle_atts = $atts;
- $this->subitem_inline_styles .= $element_styling->get_style_tag( $element_id, 'rules_only' );
- ///////////////////////////// BUTTON START //////////////////////////////// BUTTON START //////////////////////////////////
- $output = '';
- $output .= $style_tag;
- $button = '';
- if( '' != $atts['color_options'] )
- {
- if( 'custom' != $atts['btn_color_bg_hover'] && 'btn_custom_grad' != $atts['btn_color_bg'] )
- {
- // must be added otherwise we get a bottom border !!!
- // $style_hover = "style='background-color:{$atts['btn_color_bg_hover']};'";
- if( $this->is_special_button_color( $atts['btn_color_bg_hover'] ) )
- {
- $background_hover = "<span class='avia_button_background avia-button avia-color-{$atts['btn_color_bg_hover']}' {$style_hover}></span>";
- }
- }
- }
- $style_tag = $element_styling->get_style_tag( $element_id );
- $wrap_class = $element_styling->get_class_string( 'wrap' );
- $button_container_class = $element_styling->get_class_string( 'container' );
- if ($atts['button'] == 'yes') {
- $button = AbstraktEnfoldExtensions::amg_create_button($atts, $meta, $button_container_class, $style_tag, $wrap_class, $background_hover);
- }
- ///////////////////////////// BUTTON END //////////////////////////////// BUTTON END //////////////////////////////////
- $output .= "<div class='amg-flex-column card'>";
- $output .= '<div class="amg-card-container">';
- $output .= '<div class="amg-flip-box">';
- $output .= '<div class="amg-card-content">';
- $output .= ShortcodeHelper::avia_apply_autop( ShortcodeHelper::avia_remove_autop( $content ) );
- $output .= $button;
- $output .= '</div>';
- $output .= '<div id="' . $toggle_atts['custom_id'] . '" class="amg-card-image" id="card-image-' . $toggle_atts['custom_id'] . '"><img alt="' . $toggle_atts['title'] . '" src="' . $toggle_atts['src'] . '"></div>';
- $output .= "<div class='card-title-container'><{$this->heading_tag} class='amg-card-title'>" . $toggle_atts['title'] . "</{$this->heading_tag}></div>";;
- $output .= '</div>';
- $output .= '</div>';
- $output .= '</div>';
- amg_sc_cards::$counter ++;
- return $output;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment