<?php
/**
* @package SP Page Builder
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2023 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
// No direct access
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Uri\Uri;
/**
* Flip box pro addon class.
*
* @since 4.0.0
*/
class SppagebuilderAddonFlip_box_pro extends SppagebuilderAddons
{
/**
* The addon frontend render method.
* The returned HTML string will render to the frontend page.
*
* @return string The HTML string.
* @since 4.0.0
*/
public function render()
{
$settings = $this->addon->settings;
$class = (isset($settings->class) && $settings->class) ? $settings->class : '';
// front content
$front_add_icon = (isset($settings->front_add_icon) && $settings->front_add_icon) ? $settings->front_add_icon : 0;
$front_icon = (isset($settings->front_icon) && $settings->front_icon) ? $settings->front_icon : "";
$front_add_title = (isset($settings->front_add_title) && $settings->front_add_title) ? $settings->front_add_title : 0;
$front_title = (isset($settings->front_title) && $settings->front_title) ? $settings->front_title : "";
$front_add_paragraph = (isset($settings->front_add_paragraph) && $settings->front_add_paragraph) ? $settings->front_add_paragraph : 0;
$front_paragraph = (isset($settings->front_paragraph) && $settings->front_paragraph) ? $settings->front_paragraph : "";
// back content
$back_add_icon = (isset($settings->back_add_icon) && $settings->back_add_icon) ? $settings->back_add_icon : 0;
$back_icon = (isset($settings->back_icon) && $settings->back_icon) ? $settings->back_icon : "";
$back_add_title = (isset($settings->back_add_title) && $settings->back_add_title) ? $settings->back_add_title : 0;
$back_title = (isset($settings->back_title) && $settings->back_title) ? $settings->back_title : "";
$back_add_paragraph = (isset($settings->back_add_paragraph) && $settings->back_add_paragraph) ? $settings->back_add_paragraph : 0;
$back_paragraph = (isset($settings->back_paragraph) && $settings->back_paragraph) ? $settings->back_paragraph : "";
// front button options
$front_add_button = (isset($settings->front_add_button) && $settings->front_add_button) ? $settings->front_add_button : 0;
$front_show_button = $settings->flip_behavior == "click" && $front_add_button && (isset($settings->front_button_text) && trim($settings->front_button_text));
$front_button_text = (isset($settings->front_button_text) && trim($settings->front_button_text)) ? $settings->front_button_text : "";
$front_btn_class = '';
$front_btn_class .= (isset($settings->front_button_type) && $settings->front_button_type) ? ' sppb-btn-' . $settings->front_button_type : '';
$front_btn_class .= (isset($settings->front_button_size) && $settings->front_button_size) ? ' sppb-btn-' . $settings->front_button_size : '';
$front_btn_class .= (isset($settings->front_shape) && $settings->front_shape) ? ' sppb-btn-' . $settings->front_shape : ' sppb-btn-rounded';
$front_btn_class .= (isset($settings->front_appearance) && $settings->front_appearance) ? ' sppb-btn-' . $settings->front_appearance : '';
$front_btn_class .= (isset($settings->front_block) && $settings->front_block) ? ' ' . $settings->front_block : '';
$front_btn_icon = (isset($settings->front_flip_box_icon) && $settings->front_flip_box_icon) ? $settings->front_flip_box_icon : '';
$front_btn_icon_position = (isset($settings->front_flip_box_button_icon_position) && $settings->front_flip_box_button_icon_position) ? $settings->front_flip_box_button_icon_position : 'left';
list($btn_link, $front_btn_link_target) = AddonHelper::parseLink($settings, 'front_flip_box_button_link', ['url' => 'front_flip_box_button_link', 'new_tab' => 'btn_target']);
$front_attribs = (isset($front_btn_link_target) && $front_btn_link_target) ? $front_btn_link_target : '';
$front_attribs .= (!empty($btn_link)) ? ' href="' . $btn_link . '"' : '';
$front_attribs .= ' id="btn-' . $this->addon->id . '"';
$front_icon_arr = array_filter(explode(' ', $front_btn_icon));
$front_btn_icon = $front_btn_icon;
if (count($front_icon_arr) === 1) {
$front_btn_icon = 'fas ' . $front_btn_icon;
}
if ($front_btn_icon_position === 'left') {
$front_button_text = ($front_btn_icon) ? '<i class="' . $front_btn_icon . '" aria-hidden="true"></i> ' . $front_button_text : $front_button_text;
} else {
$front_button_text = ($front_btn_icon) ? $front_button_text . ' <i class="' . $front_btn_icon . '" aria-hidden="true"></i>' : $front_button_text;
}
// back button options
$back_add_button = (isset($settings->back_add_button) && $settings->back_add_button) ? $settings->back_add_button : 0;
$back_show_button = $back_add_button && (isset($settings->back_button_text) && trim($settings->back_button_text));
$back_button_text = (isset($settings->back_button_text) && trim($settings->back_button_text)) ? $settings->back_button_text : "";
$back_btn_class = '';
$back_btn_class .= (isset($settings->back_button_type) && $settings->back_button_type) ? ' sppb-btn-' . $settings->back_button_type : '';
$back_btn_class .= (isset($settings->back_button_size) && $settings->back_button_size) ? ' sppb-btn-' . $settings->back_button_size : '';
$back_btn_class .= (isset($settings->back_shape) && $settings->back_shape) ? ' sppb-btn-' . $settings->back_shape : ' sppb-btn-rounded';
$back_btn_class .= (isset($settings->back_appearance) && $settings->back_appearance) ? ' sppb-btn-' . $settings->back_appearance : '';
$back_btn_class .= (isset($settings->back_block) && $settings->back_block) ? ' ' . $settings->back_block : '';
$back_btn_icon = (isset($settings->back_flip_box_icon) && $settings->back_flip_box_icon) ? $settings->back_flip_box_icon : '';
$back_btn_icon_position = (isset($settings->back_flip_box_button_icon_position) && $settings->back_flip_box_button_icon_position) ? $settings->back_flip_box_button_icon_position : 'left';
list($btn_link, $back_btn_link_target) = AddonHelper::parseLink($settings, 'back_flip_box_button_link', ['url' => 'back_flip_box_button_link', 'new_tab' => 'btn_target']);
$back_attribs = (isset($back_btn_link_target) && $back_btn_link_target) ? $back_btn_link_target : '';
$back_attribs .= (!empty($btn_link)) ? ' href="' . $btn_link . '"' : '';
$back_attribs .= ' id="btn-' . $this->addon->id . '"';
$back_icon_arr = array_filter(explode(' ', $back_btn_icon));
$back_btn_icon = $back_btn_icon;
if (count($back_icon_arr) === 1) {
$back_btn_icon = 'fas ' . $back_btn_icon;
}
if ($back_btn_icon_position === 'left') {
$back_button_text = ($back_btn_icon) ? '<i class="' . $back_btn_icon . '" aria-hidden="true"></i> ' . $back_button_text : $back_button_text;
} else {
$back_button_text = ($back_btn_icon) ? $back_button_text . ' <i class="' . $back_btn_icon . '" aria-hidden="true"></i>' : $back_button_text;
}
$rotate = (isset($settings->rotate) && $settings->rotate) ? $settings->rotate : 'flip_right';
// Flip Behavior
$flip_behavior = (isset($settings->flip_behavior) && $settings->flip_behavior) ? $settings->flip_behavior : 'hover';
//Flip Style
$flip_style = (isset($settings->flip_style) && $settings->flip_style) ? $settings->flip_style : 'rotate_style';
if ($flip_style != "") {
if ($flip_style == "slide_style") {
$flip_style = "slide-flipbox";
} else if ($flip_style == "fade_style") {
$flip_style = "fade-flipbox";
} else if ($flip_style == "threeD_style") {
$flip_style = "threeD-flipbox";
}
}
$output = '';
$output .= '<div class="sppb-addon sppb-addon-sppb-flibox ' . $class . ' ' . $flip_style . ' ' . $rotate . ' flipon-' . $flip_behavior . '">';
if ($flip_style == 'threeD-flipbox') {
$output .= '<div class="threeD-content-wrap">';
$output .= '<div class="threeD-item">';
$output .= '<div class="threeD-flip-front">';
$output .= '<div class="threeD-content-inner">';
if ($front_add_icon) {
$output .= '<div class="sppb-flipbox-front-icon" data-fieldName="front_icon">
<i class="';
$output .= $front_icon;
$output .= '"></i>
</div>';
}
if ($front_add_title) {
$output .= '<div class="sppb-flipbox-front-title" data-fieldName="front_title">';
$output .= $front_title;
$output .= '</div>';
}
if ($front_add_paragraph) {
$output .= '<div class="sppb-flipbox-front-paragraph" data-fieldName="front_paragraph">';
$output .= $front_paragraph;
$output .= '</div>';
}
if ($front_show_button) {
$output .= '<div class="sppb-flipbox-front-button" data-fieldName="front_button">';
$output .= '<a ' . $front_attribs . ' class="sppb-btn ' . $front_btn_class . '">' . $front_button_text . '</a>';
$output .= '</div>';
}
$output .= '</div>';
$output .= '</div>';
$output .= '<div class="threeD-flip-back">';
$output .= '<div class="threeD-content-inner">';
if ($back_add_icon) {
$output .= '<div class="sppb-flipbox-back-icon" data-fieldName="back_icon">
<i class="';
$output .= $back_icon;
$output .= '"></i>
</div>';
}
if ($back_add_title) {
$output .= '<div class="sppb-flipbox-back-title" data-fieldName="back_title">';
$output .= $back_title;
$output .= '</div>';
}
if ($back_add_paragraph) {
$output .= '<div class="sppb-flipbox-back-paragraph" data-fieldName="back_paragraph">';
$output .= $back_paragraph;
$output .= '</div>';
}
if ($back_show_button) {
$output .= '<div class="sppb-flipbox-back-button" data-fieldName="back_button">';
$output .= '<a ' . $back_attribs . ' class="sppb-btn ' . $back_btn_class . '">' . $back_button_text . '</a>';
$output .= '</div>';
}
$output .= '</div>';
$output .= '</div >';
$output .= '</div>'; //.threeD-item
$output .= '</div>'; //.threeD-content-wrap
} else {
$output .= '<div class="sppb-flipbox-panel">';
$output .= '<div class="sppb-flipbox-front flip-box">';
$output .= '<div class="flip-box-inner">';
if ($front_add_icon) {
$output .= '<div class="sppb-flipbox-front-icon" data-fieldName="front_icon">
<i class="';
$output .= $front_icon;
$output .= '"></i>
</div>';
}
if ($front_add_title) {
$output .= '<div class="sppb-flipbox-front-title" data-fieldName="front_title">';
$output .= $front_title;
$output .= '</div>';
}
if ($front_add_paragraph) {
$output .= '<div class="sppb-flipbox-front-paragraph" data-fieldName="front_paragraph">';
$output .= $front_paragraph;
$output .= '</div>';
}
if ($front_show_button) {
$output .= '<div class="sppb-flipbox-front-button" data-fieldName="front_title">';
$output .= '<a ' . $front_attribs . ' class="sppb-btn ' . $front_btn_class . '">' . $front_button_text . '</a>';
$output .= '</div>';
}
$output .= '</div>'; //.flip-box-inner
$output .= '</div>'; //.front
$output .= '<div class="sppb-flipbox-back flip-box">';
$output .= '<div class="flip-box-inner">';
if ($back_add_icon) {
$output .= '<div class="sppb-flipbox-back-icon" data-fieldName="back_icon">
<i class="';
$output .= $back_icon;
$output .= '"></i>
</div>';
}
if ($back_add_title) {
$output .= '<div class="sppb-flipbox-back-title" data-fieldName="back_title">';
$output .= $back_title;
$output .= '</div>';
}
if ($back_add_paragraph) {
$output .= '<div class="sppb-flipbox-back-paragraph" data-fieldName="back_paragraph">';
$output .= $back_paragraph;
$output .= '</div>';
}
if ($back_show_button) {
$output .= '<div class="sppb-flipbox-back-button" data-fieldName="back_title">';
$output .= '<a ' . $back_attribs . ' class="sppb-btn ' . $back_btn_class . '">' . $back_button_text . '</a>';
$output .= '</div>';
}
$output .= '</div>'; //.flip-box-inner
$output .= '</div>'; //.back
$output .= '</div>'; //.sppb-flipbox-panel
}
$output .= '</div>'; //.sppb-addon-sppb-flibox
return $output;
}
/**
* Generate the CSS string for the frontend page.
*
* @return string The CSS string for the page.
* @since 4.0.0
*/
public function css()
{
$addon_id = '#sppb-addon-' . $this->addon->id;
$settings = $this->addon->settings;
$cssHelper = new CSSHelper($addon_id);
$css = '';
$flip_style = (isset($settings->flip_style) && $settings->flip_style) ? $settings->flip_style : 'rotate_style';
if ($flip_style != "") {
if ($flip_style == "slide_style") {
$flip_style = "slide-flipbox";
} else if ($flip_style == "fade_style") {
$flip_style = "fade-flipbox";
} else if ($flip_style == "threeD_style") {
$flip_style = "threeD-flipbox";
}
}
$border_styles = isset($settings->border_styles) && ($settings->border_styles) ? $settings->border_styles : "";
$flip_styles = "";
if (is_array($border_styles)) {
if (in_array('border_radius', $border_styles)) {
$flip_styles .= "border-style: dashed;";
}
if (in_array('dashed', $border_styles)) {
$flip_styles .= "border-style: solid;";
}
if (in_array('dotted', $border_styles)) {
$flip_styles .= "border-style: dotted;";
}
if (in_array('border_radius', $border_styles) || in_array('dashed', $border_styles) || in_array('dotted', $border_styles)) {
$flip_styles .= "border-width: 2px;";
$flip_styles .= "border-color:" . $settings->border_color . ";";
}
}
$css .= ' #sppb-addon-{{ data.id }} .sppb-flipbox-panel,
#sppb-addon-{{ data.id }} .threeD-item{' . $flip_styles . '}';
// Front BG style
$front_bg_type = (isset($settings->front_bg_type) && ($settings->front_bg_type)) ? $settings->front_bg_type : "color";
$front_bg_inner_type = (isset($settings->front_bg_type) && ($settings->front_bg_inner_type)) ? $settings->front_bg_inner_type : "none";
$frontBgProps = '';
$frontBgStyle = '';
if ($front_bg_type == "color") {
if ($front_bg_inner_type == "color") {
$frontBgProps = ['front_bg_color' => 'background: %s'];
$frontBgStyle = $cssHelper->generateStyle('.sppb-flipbox-front, .threeD-flip-front', $settings, $frontBgProps, false);
}
if ($front_bg_inner_type == "gradient") {
$settings->front_bg_gradient = CSSHelper::parseColor($settings, 'front_bg_gradient');
$frontBgProps = ['front_bg_gradient' => 'background: %s'];
$frontBgStyle = $cssHelper->generateStyle('.sppb-flipbox-front, .threeD-flip-front', $settings, $frontBgProps, false);
}
}
$frontImg = array();
$front_bgimg = "";
if ($front_bg_type == "image") {
if (isset($settings->front_bgimg) && isset($settings->front_bgimg->src)) {
$frontImg = $settings->front_bgimg;
} else {
$frontImg = array('src' => $settings->front_bgimg);
}
$front_bgimg_src = isset($frontImg->src) ? $frontImg->src : $front_bgimg;
if ($front_bgimg_src) {
if (preg_match("@^https?:\/\/@", $front_bgimg_src)) {
$front_bgimg = $front_bgimg_src;
} else {
$front_bgimg = Uri::root() . $front_bgimg_src;
}
$settings->front_bg_image = $front_bgimg;
}
$frontBgProps = ['front_bg_image' => 'background-image: url(%s)'];
$frontBgStyle = $cssHelper->generateStyle('.sppb-flipbox-front, .threeD-flip-front', $settings, $frontBgProps, false);
}
// Back BG style
$back_bg_type = (isset($settings->back_bg_type) && ($settings->back_bg_type)) ? $settings->back_bg_type : "color";
$back_bg_inner_type = (isset($settings->back_bg_type) && ($settings->back_bg_inner_type)) ? $settings->back_bg_inner_type : "none";
$backBgProps = '';
$backBgStyle = '';
if ($back_bg_type == "color") {
if ($back_bg_inner_type == "color") {
$backBgProps = ['back_bg_color' => 'background: %s'];
$backBgStyle = $cssHelper->generateStyle('.sppb-flipbox-back, .threeD-flip-back', $settings, $backBgProps, false);
}
if ($back_bg_inner_type == "gradient") {
$settings->back_bg_gradient = CSSHelper::parseColor($settings, 'back_bg_gradient');
$backBgProps = ['back_bg_gradient' => 'background: %s'];
$backBgStyle = $cssHelper->generateStyle('.sppb-flipbox-back, .threeD-flip-back', $settings, $backBgProps, false);
}
}
$backImg = array();
$back_bgimg = "";
if ($back_bg_type == "image") {
if (isset($settings->back_bgimg) && isset($settings->back_bgimg->src)) {
$backImg = $settings->back_bgimg;
} else {
$backImg = array('src' => $settings->back_bgimg);
}
$back_bgimg_src = isset($backImg->src) ? $backImg->src : $back_bgimg;
if ($back_bgimg_src) {
if (preg_match("@^https?:\/\/@", $back_bgimg_src)) {
$back_bgimg = $back_bgimg_src;
} else {
$back_bgimg = Uri::root() . $back_bgimg_src;
}
$settings->back_bg_image = $back_bgimg;
}
$backBgProps = ['back_bg_image' => 'background-image: url(%s)'];
$backBgStyle = $cssHelper->generateStyle('.sppb-flipbox-back, .threeD-flip-back', $settings, $backBgProps, false);
}
// radius
$front_border_radius = explode(" ", $settings->front_flip_box_radius);
$frontBorderRadius = '';
if (count($front_border_radius) > 2) {
$frontBorderRadius = $cssHelper->generateStyle('.sppb-flipbox-front, .threeD-flip-front', $settings, ['front_flip_box_radius' => 'border-radius'], ['front_flip_box_radius' => false]);
} else {
$frontBorderRadius = $cssHelper->generateStyle('.sppb-flipbox-front, .threeD-flip-front', $settings, ['front_flip_box_radius' => 'border-radius']);
}
$back_border_radius = explode(" ", $settings->back_flip_box_radius);
$backBorderRadius = '';
if (count($back_border_radius) > 2) {
$backBorderRadius = $cssHelper->generateStyle('.sppb-flipbox-back, .threeD-flip-back', $settings, ['back_flip_box_radius' => 'border-radius'], ['back_flip_box_radius' => false]);
} else {
$backBorderRadius = $cssHelper->generateStyle('.sppb-flipbox-back, .threeD-flip-back', $settings, ['back_flip_box_radius' => 'border-radius']);
}
// color
$frontTitleColor = $cssHelper->generateStyle('.sppb-flipbox-front-title', $settings, ['front_title_text_color' => 'color'], false);
$backTitleColor = $cssHelper->generateStyle('.sppb-flipbox-back-title', $settings, ['back_title_text_color' => 'color'], false);
$frontParagraphColor = $cssHelper->generateStyle('.sppb-flipbox-front-paragraph', $settings, ['front_paragraph_text_color' => 'color'], false);
$backParagraphColor = $cssHelper->generateStyle('.sppb-flipbox-back-paragraph', $settings, ['back_paragraph_text_color' => 'color'], false);
$frontIconColor = '';
if (isset($settings->front_global_background_type) && $settings->front_global_background_type == "color") {
$frontIconColor = $cssHelper->generateStyle('.sppb-flipbox-front-icon', $settings, ['front_flip_box_icon_color' => 'color'], false);
} else if ($settings->front_global_background_type == "gradient") {
$frontIconColor = $cssHelper->generateStyle('.sppb-flipbox-back-icon', $settings, ['front_flip_box_icon_gradient' => 'color'], false);
}
$backIconColor = '';
if (isset($settings->back_global_background_type) && $settings->back_global_background_type == "color") {
$backIconColor = $cssHelper->generateStyle('.sppb-flipbox-back-icon', $settings, ['back_flip_box_icon_color' => 'color'], false);
} else if (isset($settings->back_global_background_type) && $settings->back_global_background_type == "gradient") {
$settings->back_flip_box_icon_gradient = CSSHelper::parseColor($settings, 'back_flip_box_icon_gradient');
$backIconColor = $cssHelper->generateStyle('.sppb-flipbox-back-icon', $settings, ['back_flip_box_icon_gradient' => 'color'], false);
}
// typography
$frontTitleTypo = $cssHelper->typography('.sppb-flipbox-front-title', $settings, 'front_title_typography');
$backTitleTypo = $cssHelper->typography('.sppb-flipbox-back-title', $settings, 'back_title_typography');
$frontParagraphTypo = $cssHelper->typography('.sppb-flipbox-front-paragraph', $settings, 'front_paragraph_typography');
$backParagraphTypo = $cssHelper->typography('.sppb-flipbox-back-paragraph', $settings, 'back_paragraph_typography');
$frontIconSize = $cssHelper->generateStyle('.sppb-flipbox-front-icon', $settings, ['front_icon_size' => 'font-size'], 'px');
$backIconSize = $cssHelper->generateStyle('.sppb-flipbox-back-icon', $settings, ['back_icon_size' => 'font-size'], 'px');
// margin and padding
$frontIconMargin = $cssHelper->generateStyle('.sppb-flipbox-front-icon', $settings, ['front_flip_box__margin' => 'margin'], false);
$backIconMargin = $cssHelper->generateStyle('.sppb-flipbox-back-icon', $settings, ['back_flip_box__margin' => 'margin'], false);
$frontIconPadding = $cssHelper->generateStyle('.sppb-flipbox-front-icon', $settings, ['front_flip_box__padding' => 'padding'], false);
$backIconPadding = $cssHelper->generateStyle('.sppb-flipbox-back-icon', $settings, ['front_flip_box__padding' => 'padding'], false);
// front button
$css .= $cssHelper->typography('.sppb-flipbox-front-button .sppb-btn', $settings, 'front_flip_box_button_typography');
if (isset($settings->front_button_size) && $settings->front_button_size == "custom") {
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn', $settings, ['front_button_padding' => 'padding'], false);
}
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn', $settings, ['front_button_margin' => 'margin'], false);
if (isset($settings->front_block) && $settings->front_block == "sppb-btn-block") {
$css .= '#sppb-addon-' . $settings->id . ' .sppb-flipbox-front-button .sppb-btn {display: block;}';
}
// custom style
if (isset($settings->front_button_type) && $settings->front_button_type == "custom") {
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn', $settings, ['front_flip_box_button_color' => 'color'], false);
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn:hover', $settings, ['front_flip_box_button_color_hover' => 'color'], false);
if (isset($settings->front_appearance) && $settings->front_appearance == "outline") {
$css .= '#sppb-addon-{{ data.id }} .sppb-flipbox-front-button .sppb-btn {background-color: transparent;}';
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn', $settings, ['front_flip_box_button_bg_color' => 'border-color'], false);
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn:hover', $settings, ['front_flip_box_button_bg_color_hover' => 'border-color'], false);
} else if (isset($settings->front_appearance) && $settings->front_appearance == "gradient") {
$settings->front_flip_box_button_bg_gradient = CSSHelper::parseColor($settings, 'front_flip_box_button_bg_gradient');
$settings->front_flip_box_button_gradient_bg_hover = CSSHelper::parseColor($settings, 'front_flip_box_button_gradient_bg_hover');
$css .= '#sppb-addon-{{ data.id }} .sppb-btn {border: none;}';
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn', $settings, ['front_flip_box_button_bg_gradient' => 'background-color'], false);
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn:hover', $settings, ['front_flip_box_button_gradient_bg_hover' => 'background-color'], false);
} else {
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn', $settings, ['front_flip_box_button_bg_color' => 'background-color'], false);
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn:hover', $settings, ['front_flip_box_button_bg_color_hover' => 'background-color'], false);
}
}
// front link
if (isset($settings->front_button_type) && $settings->front_button_type == "link") {
$css .= '#sppb-addon-{{ data.id }} .sppb-btn {padding: 0; border-width: 0; text-decoration: none; border-radius: 0;}';
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn', $settings, ['front_flip_box_button_color' => 'color'], false);
$css .= $cssHelper->generateStyle('.sppb-flipbox-front-button .sppb-btn:hover, .sppb-btn:focus', $settings, ['front_flip_box_button_color_hover' => 'color'], false);
}
// back button
$css .= $cssHelper->typography('.sppb-flipbox-back-button .sppb-btn', $settings, 'back_flip_box_button_typography');
if (isset($settings->back_button_size) && $settings->back_button_size == "custom") {
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn', $settings, ['back_button_padding' => 'padding'], false);
}
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn', $settings, ['back_button_margin' => 'margin'], false);
if (isset($settings->back_block) && $settings->back_block == "sppb-btn-block") {
$css .= '#sppb-addon-' . $settings->id . ' .sppb-flipbox-back-button .sppb-btn {display: block;}';
}
// custom style
if (isset($settings->back_button_type) && $settings->back_button_type == "custom") {
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn', $settings, ['back_flip_box_button_color' => 'color'], false);
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn:hover', $settings, ['back_flip_box_button_color_hover' => 'color'], false);
if (isset($settings->back_appearance) && $settings->back_appearance == "outline") {
$css .= '#sppb-addon-{{ data.id }} .sppb-flipbox-back-button .sppb-btn {background-color: transparent;}';
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn', $settings, ['back_flip_box_button_bg_color' => 'border-color'], false);
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn:hover', $settings, ['back_flip_box_button_bg_color_hover' => 'border-color'], false);
} else if (isset($settings->back_appearance) && $settings->back_appearance == "gradient") {
$settings->back_flip_box_button_bg_gradient = CSSHelper::parseColor($settings, 'back_flip_box_button_bg_gradient');
$settings->back_flip_box_button_gradient_bg_hover = CSSHelper::parseColor($settings, 'back_flip_box_button_gradient_bg_hover');
$css .= '#sppb-addon-{{ data.id }} .sppb-btn {border: none;}';
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn', $settings, ['back_flip_box_button_bg_gradient' => 'background-color'], false);
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn:hover', $settings, ['back_flip_box_button_gradient_bg_hover' => 'background-color'], false);
} else {
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn', $settings, ['back_flip_box_button_bg_color' => 'background-color'], false);
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn:hover', $settings, ['back_flip_box_button_bg_color_hover' => 'background-color'], false);
}
}
// back link
if (isset($settings->back_button_type) && $settings->back_button_type == "link") {
$css .= '#sppb-addon-{{ data.id }} .sppb-btn {padding: 0; border-width: 0; text-decoration: none; border-radius: 0;}';
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn', $settings, ['back_flip_box_button_color' => 'color'], false);
$css .= $cssHelper->generateStyle('.sppb-flipbox-back-button .sppb-btn:hover, .sppb-btn:focus', $settings, ['back_flip_box_button_color_hover' => 'color'], false);
}
// others
$flipProps = ['height' => 'height'];
$flipStyle = $cssHelper->generateStyle('.sppb-flipbox-panel, .threeD-item', $settings, $flipProps);
$settings->text_align = $cssHelper->parseAlignment($settings, 'text_align');
$textAlign = $cssHelper->generateStyle('.sppb-addon-sppb-flibox', $settings, ['text_align' => 'text-align'], false);
$css .= $textAlign;
$css .= $flipStyle;
$css .= $frontBgStyle;
$css .= $backBgStyle;
$css .= $backBgStyle;
$css .= $frontBorderRadius;
$css .= $backBorderRadius;
$css .= $frontIconColor;
$css .= $backIconColor;
$css .= $frontTitleColor;
$css .= $backTitleColor;
$css .= $frontParagraphColor;
$css .= $backParagraphColor;
$css .= $frontTitleTypo;
$css .= $backTitleTypo;
$css .= $frontParagraphTypo;
$css .= $backParagraphTypo;
$css .= $frontIconSize;
$css .= $backIconSize;
$css .= $frontIconMargin;
$css .= $backIconMargin;
$css .= $frontIconPadding;
$css .= $backIconPadding;
return $css;
}
/**
* Generate the lodash template string for the frontend editor.
*
* @return string The lodash template string.
* @since 4.0.0
*/
public static function getTemplate()
{
$lodash = new Lodash('#sppb-addon-{{ data.id }}');
$output = '
<#
let flip_style = (data.flip_style) ? data.flip_style : "rotate_style";
let front_bg_type = (data.front_bg_type) ? data.front_bg_type : "color";
let front_bg_inner_type = (data.front_bg_inner_type) ? data.front_bg_inner_type : "none";
let front_bg_color = (data.front_bg_color) ? data.front_bg_color : "";
let front_bg_gradient = (data.front_bg_gradient) ? data.front_bg_gradient : "";
let front_flip_box_radius = (data.front_flip_box_radius) ? data.front_flip_box_radius : 0;
// background type settings
let flip_front_bg_color = "";
if (front_bg_type == "color") {
if (front_bg_inner_type == "color") {
flip_front_bg_color = front_bg_color;
}
if (front_bg_inner_type == "gradient") {
flip_front_bg_color = front_bg_gradient;
}
}
let frontImg = {}
let front_bgimg = "";
if (data.front_bg_type == "image") {
if (typeof data.front_bgimg !== "undefined" && typeof data.front_bgimg.src !== "undefined") {
frontImg = data.front_bgimg
} else {
frontImg = {src: data.front_bgimg}
}
if (_.isObject(frontImg) && frontImg.src != undefined) {
if(frontImg.src.indexOf("http://") !== -1 || frontImg.src.indexOf("https://") !== -1){
front_bgimg = frontImg.src;
} else {
front_bgimg = pagebuilder_base + frontImg.src;
}
}
}
let back_bg_type = (data.back_bg_type) ? data.back_bg_type : "color";
let back_bg_inner_type = (data.back_bg_inner_type) ? data.back_bg_inner_type : "none";
let back_bg_color = (data.back_bg_color) ? data.back_bg_color : "";
let back_bg_gradient = (data.back_bg_gradient) ? data.back_bg_gradient : "";
let back_flip_box_radius = (data.back_flip_box_radius) ? data.back_flip_box_radius : 0;
let flip_back_bg_color = "";
if (back_bg_type == "color") {
if (back_bg_inner_type == "color") {
flip_back_bg_color = back_bg_color;
}
if (back_bg_inner_type == "gradient") {
flip_back_bg_color = back_bg_gradient;
}
}
let backImg = {};
if (typeof data.back_bgimg !== "undefined" && typeof data.back_bgimg.src !== "undefined") {
backImg = data.back_bgimg
} else {
backImg = {src: data.back_bgimg}
}
let back_bgimg = "";
if (_.isObject(backImg) && backImg.src != undefined) {
if(backImg.src.indexOf("http://") !== -1 || backImg.src.indexOf("https://") !== -1){
back_bgimg = backImg.src;
} else {
back_bgimg = pagebuilder_base + backImg.src;
}
}
if (flip_style != "") {
if (flip_style == "slide_style") {
flip_style = "slide-flipbox";
} else if (flip_style == "fade_style") {
flip_style = "fade-flipbox";
} else if (flip_style == "threeD_style") {
flip_style = "threeD-flipbox";
}
}
let border_styles = (data.border_styles) ? data.border_styles : "";
let flip_styles = "";
if(_.isArray(border_styles)) {
if(border_styles.indexOf("border_radius") !== -1){
flip_styles += "border-radius: 8px;";
}
if(border_styles.indexOf("dashed") !== -1){
flip_styles += "border-style: dashed;";
} else if(border_styles.indexOf("solid") !== -1){
flip_styles += "border-style: solid;";
} else if(border_styles.indexOf("dotted") !== -1){
flip_styles += "border-style: dotted;";
}
if(border_styles.indexOf("dashed") !== -1 || border_styles.indexOf("solid") !== -1 || border_styles.indexOf("dotted") !== -1){
flip_styles += "border-width: 2px;";
flip_styles += "border-color:"+data.border_color+";";
}
}
let front_icon_color = "";
if(data.front_global_background_type == "color") {
front_icon_color = data.front_flip_box_icon_color;
} else if(data.front_global_background_type == "gradient") {
front_icon_color = data.front_flip_box_icon_gradient;
}
let back_icon_color = "";
if(data.back_global_background_type == "color") {
back_icon_color = data.back_flip_box_icon_color;
} else if(data.back_global_background_type == "gradient") {
back_icon_color = data.back_flip_box_icon_gradient;
}
// front button
let classListFront = " sppb-btn-" + data.front_button_type;
classListFront += " sppb-btn-" + data.front_button_size;
classListFront += " sppb-btn-" + data.front_shape;
if (!_.isEmpty(data.front_appearance)) {
classListFront += " sppb-btn-"+data.front_appearance;
}
const isMenuBtnFront = _.isString(data.front_flip_box_button_link?.menu) && data.front_flip_box_button_link.type === "menu" && data.front_flip_box_button_link?.menu;
const isPageBtnFront = _.isString(data.front_flip_box_button_link?.page) && data.front_flip_box_button_link.type === "page" && data.front_flip_box_button_link?.page;
const isObjectBtnFront = _.isObject(data.front_flip_box_button_link) && ((data.front_flip_box_button_link.type === "url" && data.front_flip_box_button_link?.url !== "") || isMenuBtnFront || isPageBtnFront);
let urlObjBtnFront = {};
let urlBtnFront = "";
let targetBtnFront = "";
let relBtnFront = "";
urlObjBtnFront = isObjectBtnFront ? data.front_flip_box_button_link : window.getSiteUrl(data.front_flip_box_button_link, data?.btn_target);
if(urlObjBtnFront.type === "url") {
urlBtnFront = urlObjBtnFront.url;
}
if(urlObjBtnFront.type === "menu") {
urlBtnFront = urlObjBtnFront.menu || "";
}
if(urlObjBtnFront.type === "page") {
urlBtnFront = urlObjBtnFront.page ? `index.php?option=com_sppagebuilder&view=page&id=${urlObjBtnFront.page}` : "";
}
targetBtnFront = urlObjBtnFront.new_tab ? "_blank": "";
relBtnFront += urlObjBtnFront.nofollow ? "nofollow": "";
relBtnFront += urlObjBtnFront.noopener ? " noopener": "";
relBtnFront += urlObjBtnFront.noreferrer ? " noreferrer": "";
// back button
let classListBack = " sppb-btn-" + data.back_button_type;
classListBack += " sppb-btn-" + data.back_button_size;
classListBack += " sppb-btn-" + data.back_shape;
if (!_.isEmpty(data.back_appearance)) {
classListBack += " sppb-btn-"+data.back_appearance;
}
const isMenuBtnBack = _.isString(data.back_flip_box_button_link?.menu) && data.back_flip_box_button_link.type === "menu" && data.back_flip_box_button_link?.menu;
const isPageBtnBack = _.isString(data.back_flip_box_button_link?.page) && data.back_flip_box_button_link.type === "page" && data.back_flip_box_button_link?.page;
const isObjectBtnBack = _.isObject(data.back_flip_box_button_link) && ((data.back_flip_box_button_link.type === "url" && data.back_flip_box_button_link?.url !== "") || isMenuBtnBack || isPageBtnBack);
let urlObjBtnBack = {};
let urlBtnBack = "";
let targetBtnBack = "";
let relBtnBack = "";
urlObjBtnBack = isObjectBtnBack ? data.back_flip_box_button_link : window.getSiteUrl(data.back_flip_box_button_link, data?.btn_target);
if(urlObjBtnBack.type === "url") {
urlBtnBack = urlObjBtnBack.url;
}
if(urlObjBtnBack.type === "menu") {
urlBtnBack = urlObjBtnBack.menu || "";
}
if(urlObjBtnBack.type === "page") {
urlBtnBack = urlObjBtnBack.page ? `index.php?option=com_sppagebuilder&view=page&id=${urlObjBtnBack.page}` : "";
}
targetBtnBack = urlObjBtnBack.new_tab ? "_blank": "";
relBtnBack += urlObjBtnBack.nofollow ? "nofollow": "";
relBtnBack += urlObjBtnBack.noopener ? " noopener": "";
relBtnBack += urlObjBtnBack.noreferrer ? " noreferrer": "";
#>
<style type="text/css">
#sppb-addon-{{ data.id }} .sppb-flipbox-panel,
#sppb-addon-{{ data.id }} .threeD-item{
{{ flip_styles }}
}
<# if (data.front_bg_type == "image"){ #>
#sppb-addon-{{ data.id }} .sppb-flipbox-front,
#sppb-addon-{{ data.id }} .threeD-flip-front{
background-image: url({{ front_bgimg }});
}
<# } #>
<# if (data.back_bg_type == "image"){ #>
#sppb-addon-{{ data.id }} .sppb-flipbox-back,
#sppb-addon-{{ data.id }} .threeD-flip-back{
background-image: url({{ back_bgimg }});
}
<# } #>
';
// background and color
$output .= $lodash->color('background-color', '.sppb-flipbox-front, .threeD-flip-front', 'flip_front_bg_color');
$output .= $lodash->color('background-color', '.sppb-flipbox-back, .threeD-flip-back', 'flip_back_bg_color');
$output .= $lodash->color('color', '.sppb-flipbox-front-title', 'data.front_title_text_color');
$output .= $lodash->color('color', '.sppb-flipbox-back-title', 'data.back_title_text_color');
$output .= $lodash->color('background-color', '.threeD-flip-front:before, .sppb-flipbox-front.flip-box:before', 'flip_front_bg_color');
$output .= $lodash->color('background-color', '.threeD-flip-back:before, .sppb-flipbox-back.flip-box:before', 'flip_back_bg_color');
$output .= $lodash->color('color', '.sppb-flipbox-front-paragraph', 'data.front_paragraph_text_color');
$output .= $lodash->color('color', '.sppb-flipbox-back-paragraph', 'data.back_paragraph_text_color');
$output .= $lodash->color('color', '.sppb-flipbox-front-icon', 'front_icon_color');
$output .= $lodash->color('color', '.sppb-flipbox-back-icon', 'back_icon_color');
// typography
$output .= $lodash->typography('.sppb-flipbox-front-title', 'data.front_title_typography');
$output .= $lodash->typography('.sppb-flipbox-back-title', 'data.back_title_typography');
$output .= $lodash->typography('.sppb-flipbox-front-paragraph', 'data.front_paragraph_typography');
$output .= $lodash->typography('.sppb-flipbox-back-paragraph', 'data.back_paragraph_typography');
$output .= $lodash->unit('font-size', '.sppb-flipbox-front-icon', 'data.front_icon_size', 'px');
$output .= $lodash->unit('font-size', '.sppb-flipbox-back-icon', 'data.back_icon_size', 'px');
// margin and padding
$output .= $lodash->unit('margin', '.sppb-flipbox-front-icon', 'data.front_flip_box__margin');
$output .= $lodash->unit('margin', '.sppb-flipbox-back-icon', 'data.back_flip_box__margin');
$output .= $lodash->unit('padding', '.sppb-flipbox-front-icon', 'data.front_flip_box__padding');
$output .= $lodash->unit('padding', '.sppb-flipbox-back-icon', 'data.back_flip_box__padding');
// radius
$output .= '<# if((data.front_flip_box_radius + "").split(" ").length < 2) { #>';
$output .= $lodash->unit('border-radius', '.sppb-flipbox-front, .threeD-flip-front', 'data.front_flip_box_radius', 'px');
$output .= '<# } else { #>';
$output .= '#sppb-addon-{{data.id}} .sppb-flipbox-front, #sppb-addon-{{data.id}} .threeD-flip-front {
{{window.getSplitRadius(data.front_flip_box_radius)}}
}';
$output .= '<# } #>';
$output .= '<# if((data.back_flip_box_radius + "").split(" ").length < 2) { #>';
$output .= $lodash->unit('border-radius', '.sppb-flipbox-back, .threeD-flip-back', 'data.back_flip_box_radius', 'px');
$output .= '<# } else { #>';
$output .= '#sppb-addon-{{data.id}} .sppb-flipbox-back, #sppb-addon-{{data.id}} .threeD-flip-back {
{{window.getSplitRadius(data.back_flip_box_radius)}}
}';
$output .= '<# } #>';
// front button
$output .= $lodash->typography('.sppb-flipbox-front-button .sppb-btn', 'data.front_flip_box_button_typography');
$output .= '<# if (data.front_button_size == "custom") { #>';
$output .= $lodash->spacing('padding', '.sppb-flipbox-front-button .sppb-btn', 'data.front_button_padding');
$output .= '<# } #>';
$output .= $lodash->spacing('margin', '.sppb-flipbox-front-button .sppb-btn', 'data.front_button_margin');
$output .= '<# if (data.front_block == "sppb-btn-block") { #>';
$output .= '#sppb-addon-{{ data.id }} .sppb-flipbox-front-button .sppb-btn {display: block;}';
$output .= '<# } #>';
// custom style
$output .= '<# if (data.front_button_type == "custom") { #>';
$output .= $lodash->color('color', '.sppb-flipbox-front-button .sppb-btn', 'data.front_flip_box_button_color');
$output .= $lodash->color('color', '.sppb-flipbox-front-button .sppb-btn:hover', 'data.front_flip_box_button_color_hover');
$output .= '<# if (data.front_appearance == "outline") { #>';
$output .= '#sppb-addon-{{ data.id }} .sppb-flipbox-front-button .sppb-btn {background-color: transparent;}';
$output .= $lodash->unit('border-color', '.sppb-flipbox-front-button .sppb-btn', 'data.front_flip_box_button_bg_color', '', false);
$output .= $lodash->unit('border-color', '.sppb-flipbox-front-button .sppb-btn:hover', 'data.front_flip_box_button_bg_color_hover', '', false);
$output .= '<# } else if (data.front_appearance == "gradient") { #>';
$output .= '#sppb-addon-{{ data.id }} .sppb-btn {border: none;}';
$output .= $lodash->color('background-color', '.sppb-flipbox-front-button .sppb-btn', 'data.front_flip_box_button_bg_gradient');
$output .= $lodash->color('background-color', '.sppb-flipbox-front-button .sppb-btn:hover', 'data.front_flip_box_button_gradient_bg_hover');
$output .= '<# } else { #>';
$output .= $lodash->color('background-color', '.sppb-flipbox-front-button .sppb-btn', 'data.front_flip_box_button_bg_color');
$output .= $lodash->color('background-color', '.sppb-flipbox-front-button .sppb-btn:hover', 'data.front_flip_box_button_bg_color_hover');
$output .= '<# } #>';
$output .= '<# } #>';
// link
$output .= '<# if (data.front_button_type == "link") { #>';
$output .= '#sppb-addon-{{ data.id }} .sppb-btn {padding: 0; border-width: 0; text-decoration: none; border-radius: 0;}';
$output .= $lodash->color('color', '.sppb-flipbox-front-button .sppb-btn', 'data.front_flip_box_button_color');
// $output .= $lodash->unit('border-color', '.sppb-flipbox-front-button .sppb-btn', 'data.link_btn_border_color', '', false);
// $output .= $lodash->unit('border-bottom-width', '.sppb-flipbox-front-button .sppb-btn', 'data.link_btn_border_width', 'px');
// $output .= $lodash->unit('padding-bottom', '.sppb-flipbox-front-button .sppb-btn', 'data.link_btn_padding_bottom', 'px');
$output .= $lodash->color('color', '.sppb-flipbox-front-button .sppb-btn:hover, .sppb-btn:focus', 'data.front_flip_box_button_color_hover');
// $output .= $lodash->unit('border-color', '.sppb-flipbox-front-button .sppb-btn:hover, .sppb-btn:focus', 'data.link_btn_border_hover_color', '', false);
$output .= '<# } #>';
// front button end
// back button
$output .= $lodash->typography('.sppb-flipbox-back-button .sppb-btn', 'data.back_flip_box_button_typography');
$output .= '<# if (data.back_button_size == "custom") { #>';
$output .= $lodash->spacing('padding', '.sppb-flipbox-back-button .sppb-btn', 'data.back_button_padding');
$output .= '<# } #>';
$output .= $lodash->spacing('margin', '.sppb-flipbox-back-button .sppb-btn', 'data.back_button_margin');
$output .= '<# if (data.back_block == "sppb-btn-block") { #>';
$output .= '#sppb-addon-{{ data.id }} .sppb-flipbox-back-button .sppb-btn {display: block;}';
$output .= '<# } #>';
// custom style
$output .= '<# if (data.back_button_type == "custom") { #>';
$output .= $lodash->color('color', '.sppb-flipbox-back-button .sppb-btn', 'data.back_flip_box_button_color');
$output .= $lodash->color('color', '.sppb-flipbox-back-button .sppb-btn:hover', 'data.back_flip_box_button_color_hover');
$output .= '<# if (data.back_appearance == "outline") { #>';
$output .= '#sppb-addon-{{ data.id }} .sppb-flipbox-back-button .sppb-btn {background-color: transparent;}';
$output .= $lodash->unit('border-color', '.sppb-flipbox-back-button .sppb-btn', 'data.back_flip_box_button_bg_color', '', false);
$output .= $lodash->unit('border-color', '.sppb-flipbox-back-button .sppb-btn:hover', 'data.back_flip_box_button_bg_color_hover', '', false);
$output .= '<# } else if (data.back_appearance == "gradient") { #>';
$output .= '#sppb-addon-{{ data.id }} .sppb-btn {border: none;}';
$output .= $lodash->color('background-color', '.sppb-flipbox-back-button .sppb-btn', 'data.back_flip_box_button_bg_color');
$output .= $lodash->color('background-color', '.sppb-flipbox-back-button .sppb-btn:hover', 'data.back_flip_box_button_gradient_bg_hover');
$output .= '<# } else { #>';
$output .= $lodash->color('background-color', '.sppb-flipbox-back-button .sppb-btn', 'data.back_flip_box_button_bg_color');
$output .= $lodash->color('background-color', '.sppb-flipbox-back-button .sppb-btn:hover', 'data.back_flip_box_button_bg_color_hover');
$output .= '<# } #>';
$output .= '<# } #>';
// link
$output .= '<# if (data.back_button_type == "link") { #>';
$output .= '#sppb-addon-{{ data.id }} .sppb-btn {padding: 0; border-width: 0; text-decoration: none; border-radius: 0;}';
$output .= $lodash->color('color', '.sppb-flipbox-back-button .sppb-btn', 'data.back_flip_box_button_color');
// $output .= $lodash->unit('border-color', '.sppb-flipbox-back-button .sppb-btn', 'data.link_btn_border_color', '', false);
// $output .= $lodash->unit('border-bottom-width', '.sppb-flipbox-back-button .sppb-btn', 'data.link_btn_border_width', 'px');
// $output .= $lodash->unit('padding-bottom', '.sppb-flipbox-back-button .sppb-btn', 'data.link_btn_padding_bottom', 'px');
$output .= $lodash->color('color', '.sppb-flipbox-back-button .sppb-btn:hover, .sppb-btn:focus', 'data.back_flip_box_button_color_hover');
// $output .= $lodash->unit('border-color', '.sppb-flipbox-back-button .sppb-btn:hover, .sppb-btn:focus', 'data.link_btn_border_hover_color', '', false);
$output .= '<# } #>';
// back button end
$output .= $lodash->unit('height', '.sppb-flipbox-panel, .threeD-item', 'data.height', 'px');
$output .= $lodash->alignment('text-align', '.sppb-addon-sppb-flibox', 'data.text_align');
$output .= '</style>
<div class="sppb-addon sppb-addon-sppb-flibox {{ data.class }} {{ flip_style }} {{ data.rotate }} flipon-{{ data.flip_behavior }}">
<# if (flip_style == "threeD-flipbox") { #>
<div class="threeD-content-wrap">
<div class="threeD-item">
<div class="threeD-flip-front">
<div class="threeD-content-inner" data-id={{data.id}}>
<# if(data.front_add_icon) { #>
<div class="sppb-flipbox-front-icon" data-fieldName="front_icon">
<i class="{{{data.front_icon}}}"></i>
</div>
<# } #>
<# if(data.front_add_title) { #>
<div class="sppb-flipbox-front-title" data-fieldName="front_text">
{{{ data.front_title }}}
</div>
<# } #>
<# if(data.front_add_paragraph) { #>
<div class="sppb-flipbox-front-paragraph" data-fieldName="front_paragraph">
{{{ data.front_paragraph }}}
</div>
<# } #>
<# if(data.flip_behavior == "click" && data.front_add_button && data.front_button_text && _.trim(data.front_button_text)){
let icon_arr_front = (typeof data.front_flip_box_icon !== "undefined" && data.front_flip_box_icon) ? data.front_flip_box_icon.split(" ") : "";
let icon_name_front = icon_arr_front.length === 1 ? "fa "+data.front_flip_box_icon : data.front_flip_box_icon;
#>
<div class="sppb-flipbox-front-button" data-fieldName="front_button">
<a href=\'{{ urlBtnFront }}\' target=\'{{ targetBtnFront }}\' rel=\'{{ relBtnFront }}\' id="btn-{{ data.id }}" class="sppb-btn {{ classListFront }}"><# if(data.back_flip_box_button_icon_position == "left" && !_.isEmpty(data.front_flip_box_icon)) { #><i class="{{ icon_name_front }}"></i> <# } #>{{ data.front_button_text }}<# if(data.front_flip_box_button_icon_position == "right" && !_.isEmpty(data.front_flip_box_icon)) { #> <i class="{{ icon_name_front }}"></i><# } #></a>
</div>
<# } #>
</div>
</div>
<div class="threeD-flip-back">
<div class="threeD-content-inner" data-id={{data.id}}>
<# if(data.back_add_icon) { #>
<div class="sppb-flipbox-back-icon" data-id={{data.id}} data-fieldName="back_icon">
<i class="{{{data.back_icon}}}"></i>
</div>
<# } #>
<# if(data.back_add_title) { #>
<div class="sppb-flipbox-back-title" data-id={{data.id}} data-fieldName="flip_text">
{{{ data.back_title }}}
</div>
<# } #>
<# if(data.back_add_paragraph) { #>
<div class="sppb-flipbox-back-paragraph" data-id={{data.id}} data-fieldName="flip_paragraph">
{{{ data.back_paragraph }}}
</div>
<# } #>
<# if(data.back_add_button && data.back_button_text && _.trim(data.back_button_text)){
let icon_arr_back = (typeof data.back_flip_box_icon !== "undefined" && data.back_flip_box_icon) ? data.back_flip_box_icon.split(" ") : "";
let icon_name_back = icon_arr_back.length === 1 ? "fa "+data.back_flip_box_icon : data.back_flip_box_icon;
#>
<div class="sppb-flipbox-back-button" data-id={{data.id}} data-fieldName="back_button">
<a href=\'{{ urlBtnBack }}\' target=\'{{ targetBtnBack }}\' rel=\'{{ relBtnBack }}\' id="btn-{{ data.id }}" class="sppb-btn {{ classListBack }}"><# if(data.back_flip_box_button_icon_position == "left" && !_.isEmpty(data.back_flip_box_icon)) { #><i class="{{ icon_name_back }}"></i> <# } #>{{ data.back_button_text }}<# if(data.back_flip_box_button_icon_position == "right" && !_.isEmpty(data.back_flip_box_icon)) { #> <i class="{{ icon_name_back }}"></i><# } #></a>
</div>
<# } #>
</div>
</div>
</div>
</div>
<# } else { #>
<div class="sppb-flipbox-panel">
<div class="sppb-flipbox-front flip-box">
<div class="flip-box-inner" data-id={{data.id}}>
<# if(data.front_add_icon) { #>
<div class="sppb-flipbox-front-icon" data-id={{data.id}} data-fieldName="front_icon">
<i class="{{{data.front_icon}}}"></i>
</div>
<# } #>
<# if(data.front_add_title) { #>
<div class="sppb-flipbox-front-title" data-id={{data.id}} data-fieldName="front_text">
{{{ data.front_title }}}
</div>
<# } #>
<# if(data.front_add_paragraph) { #>
<div class="sppb-flipbox-front-paragraph" data-id={{data.id}} data-fieldName="front_paragraph">
{{{ data.front_paragraph }}}
</div>
<# } #>
<# if(data.flip_behavior == "click" && data.front_add_button && data.front_button_text && _.trim(data.front_button_text)){
let icon_arr_front = (typeof data.front_flip_box_icon !== "undefined" && data.front_flip_box_icon) ? data.front_flip_box_icon.split(" ") : "";
let icon_name_front = icon_arr_front.length === 1 ? "fa "+data.front_flip_box_icon : data.front_flip_box_icon;
#>
<div class="sppb-flipbox-front-button" data-id={{data.id}} data-fieldName="front_button">
<a href=\'{{ urlBtnFront }}\' target=\'{{ targetBtnFront }}\' rel=\'{{ relBtnFront }}\' id="btn-{{ data.id }}" class="sppb-btn {{ classListFront }}"><# if(data.front_flip_box_button_icon_position == "left" && !_.isEmpty(data.front_flip_box_icon)) { #><i class="{{ icon_name_front }}"></i> <# } #>{{ data.front_button_text }}<# if(data.front_flip_box_button_icon_position == "right" && !_.isEmpty(data.front_flip_box_icon)) { #> <i class="{{ icon_name_front }}"></i><# } #></a>
</div>
<# } #>
</div>
</div>
<div class="sppb-flipbox-back flip-box">
<div class="flip-box-inner" data-id={{data.id}}>
<# if(data.back_add_icon) { #>
<div class="sppb-flipbox-back-icon" data-id={{data.id}} data-fieldName="back_icon">
<i class="{{{data.back_icon}}}"></i>
</div>
<# } #>
<# if(data.back_add_title) { #>
<div class="sppb-flipbox-back-title" data-id={{data.id}} data-fieldName="flip_text">
{{{ data.back_title }}}
</div>
<# } #>
<# if(data.back_add_paragraph) { #>
<div class="sppb-flipbox-back-paragraph" data-id={{data.id}} data-fieldName="flip_paragraph">
{{{ data.back_paragraph }}}
</div>
<# } #>
<# if(data.back_add_button && data.back_button_text && _.trim(data.back_button_text)){
let icon_arr_back = (typeof data.back_flip_box_icon !== "undefined" && data.back_flip_box_icon) ? data.back_flip_box_icon.split(" ") : "";
let icon_name_back = icon_arr_back.length === 1 ? "fa "+data.back_flip_box_icon : data.back_flip_box_icon;
#>
<div class="sppb-flipbox-back-button" data-id={{data.id}} data-fieldName="back_button">
<a href=\'{{ urlBtnBack }}\' target=\'{{ targetBtnBack }}\' rel=\'{{ relBtnBack }}\' id="btn-{{ data.id }}" class="sppb-btn {{ classListBack }}"><# if(data.back_flip_box_button_icon_position == "left" && !_.isEmpty(data.back_flip_box_icon)) { #><i class="{{ icon_name_back }}"></i> <# } #>{{ data.back_button_text }}<# if(data.back_flip_box_button_icon_position == "right" && !_.isEmpty(data.back_flip_box_icon)) { #> <i class="{{ icon_name_back }}"></i><# } #></a>
</div>
<# } #>
</div>
</div>
</div>
<# } #>
</div>
';
return $output;
}
}