File "link-section.php"
Full Path: /home/shadsolw/public_html/wp-content/plugins/edge-core/shortcodes/link-section/link-section.php
File size: 6.9 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace EdgeCore\CPT\Shortcodes\LinkSection;
use EdgeCore\Lib;
class LinkSection implements Lib\ShortcodeInterface {
private $base;
private $linkSection;
function __construct() {
$this->base = 'edgtf_link_section';
add_action( 'vc_before_init', array( $this, 'vcMap' ) );
}
public function getBase() {
return $this->base;
}
public function vcMap() {
if ( function_exists( 'vc_map' ) ) {
vc_map(
array(
'name' => esc_html__( 'Edge Link Section', 'edge-core' ),
'base' => $this->getBase(),
'icon' => 'icon-wpb-link-section extended-custom-icon',
'category' => esc_html__( 'by EDGE', 'edge-core' ),
'allowed_container_element' => 'vc_row',
'params' => array(
array(
'type' => 'textfield',
'param_name' => 'title',
'heading' => esc_html__( 'Title', 'edge-core' )
),
array(
'type' => 'colorpicker',
'param_name' => 'title_color',
'heading' => esc_html__( 'Title Color', 'edge-core' ),
'dependency' => array( 'element' => 'title', 'not_empty' => true )
),
array(
'type' => 'textfield',
'param_name' => 'title_break_words',
'heading' => esc_html__( 'Position of Line Break', 'edge-core' ),
'description' => esc_html__( 'Enter the position of the word after which you would like to create a line break (e.g. if you would like the line break after the 3rd word, you would enter "3")', 'edge-core' ),
'dependency' => array( 'element' => 'title', 'not_empty' => true ),
),
array(
'type' => 'param_group',
'heading' => esc_html__('Single Link', 'edge-core'),
'param_name' => 'single_link',
'value' => '',
'params' => array(
array(
'type' => 'textfield',
'param_name' => 'link',
'heading' => esc_html__( 'Link', 'edge-core' )
),
array(
'type' => 'dropdown',
'param_name' => 'target',
'heading' => esc_html__( 'Target', 'edge-core' ),
'value' => array_flip( aalto_edge_get_link_target_array() ),
'dependency' => array( 'element' => 'link', 'not_empty' => true )
),
array(
'type' => 'textfield',
'param_name' => 'link_text',
'heading' => esc_html__( 'Link Text', 'edge-core' ),
'dependency' => array( 'element' => 'link', 'not_empty' => true )
),
)
),
array(
'type' => 'colorpicker',
'param_name' => 'link_color',
'heading' => esc_html__( 'Link Color', 'edge-core' )
),
array(
'type' => 'dropdown',
'param_name' => 'enable_appear_animation',
'heading' => esc_html__( 'Enable Appear Animation', 'edge-core' ),
'value' => array_flip( aalto_edge_get_yes_no_select_array( false, true ) ),
'group' => esc_html__( 'Additional Features', 'edge-core' )
)
)
)
);
}
}
public function render( $atts, $content = null ) {
$args = array(
'title' => '',
'title_color' => '',
'title_break_words' => '',
'single_link' => '',
'link_color' => '',
'enable_appear_animation' => 'yes'
);
$params = shortcode_atts( $args, $atts );
//Link Section Data
$params['holder_classes'] = $this->getHolderClasses($params);
$params['single_link'] = $this->getSingleLinkParams($params);
$params['link_styles'] = $this->getLinkStyle($params);
$params['title_styles'] = $this->getTitleStyle($params);
if(!empty($params['title'])) {
if(!empty($params['title_break_words'])) {
$title_break_words = str_replace( ' ', '', $params['title_break_words'] );
$split_title = explode( ' ', $params['title'] );
if ( ! empty( $title_break_words ) ) {
if ( ! empty( $split_title[ $title_break_words - 1 ] ) ) {
$split_title[ $title_break_words - 1 ] = $split_title[ $title_break_words - 1 ] . '<br />';
}
}
$params['title'] = implode( ' ', $split_title );
}
}
$html = edgtf_core_get_shortcode_module_template_part( 'templates/link-section', 'link-section', '', $params );
return $html;
}
public function getHolderClasses($params){
$classes = array();
if ($params['enable_appear_animation'] == 'yes') {
$classes[] = 'edgtf-appear-fx';
}
return implode(' ', $classes);
}
private function getTitleStyle($params) {
$title_style = array();
if(!empty($params['title_color'])) {
$title_style[] = 'color:'.$params['title_color'];
}
return implode('; ', $title_style);
}
/**
* Add wanted params for link section
*
* @param $params
* @return array
*/
private function getSingleLinkParams($params) {
$single_link = json_decode(urldecode($params['single_link']), true);
$single_items = array();
foreach ($single_link as $single_link_item) {
$single_items[] = $single_link_item;
}
return $single_items;
}
private function getLinkStyle($params) {
$link_style = array();
if(!empty($params['link_color'])) {
$link_style[] = 'color:'.$params['link_color'];
}
return implode('; ', $link_style);
}
}