Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/components/com_sppagebuilder/addons/testimonialpro/ |
| [Home] [System Details] [Kill Me] |
<?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\Language\Text;
class SppagebuilderAddonTestimonialpro extends SppagebuilderAddons
{
public function render()
{
$settings = $this->addon->settings;
$class = (isset($settings->class) &&
$settings->class) ? $settings->class : '';
//Options
$autoplay = (isset($settings->autoplay) &&
$settings->autoplay) ? '
data-sppb-ride="sppb-carousel"' : '';
$controls = (isset($settings->controls) &&
$settings->controls) ? $settings->controls : 0;
$arrow_controls = (isset($settings->arrow_controls) &&
$settings->arrow_controls) ? $settings->arrow_controls : 0;
$interval = (isset($settings->interval) &&
$settings->interval) ? ((int) $settings->interval * 1000) : 5000;
$avatar_shape = (isset($settings->avatar_shape) &&
$settings->avatar_shape) ? $settings->avatar_shape :
'sppb-avatar-circle';
$show_quote = (isset($settings->show_quote)) ?
$settings->show_quote : true;
$avatar_on_top = (isset($settings->avatar_on_top)) ?
$settings->avatar_on_top : 0;
//Arrow icon
$arrow_icon = (isset($settings->arrow_icon)) ?
$settings->arrow_icon : 'chevron';
$left_arrow = '';
$right_arrow = '';
if ($arrow_icon == 'angle_double') {
$left_arrow = 'fa-angle-double-left';
$right_arrow = 'fa-angle-double-right';
} elseif ($arrow_icon == 'arrow') {
$left_arrow = 'fa-arrow-left';
$right_arrow = 'fa-arrow-right';
} elseif ($arrow_icon == 'arrow_circle') {
$left_arrow = 'fa-arrow-circle-o-left';
$right_arrow = 'fa-arrow-circle-o-right';
} elseif ($arrow_icon == 'long_arrow') {
$left_arrow = 'fa-long-arrow-left';
$right_arrow = 'fa-long-arrow-right';
} elseif ($arrow_icon == 'angle') {
$left_arrow = 'fa-angle-left';
$right_arrow = 'fa-angle-right';
} else {
$left_arrow = 'fa-chevron-left';
$right_arrow = 'fa-chevron-right';
}
//Output
$output = '<div id="sppb-testimonial-pro-' .
$this->addon->id . '" data-interval="' .
$interval . '" class="sppb-carousel sppb-testimonial-pro
sppb-slide ' . $class . '"' . $autoplay .
'>';
if ($controls) {
$output .= '<ol
class="sppb-carousel-indicators">';
foreach ($settings->sp_testimonialpro_item as $key1 =>
$value) {
$output .= '<li
data-sppb-target="#sppb-carousel-' . $this->addon->id .
'" ' . (($key1 == 0) ? ' class="active"'
: '') . ' data-sppb-slide-to="' . $key1 .
'"></li>' . "\n";
}
$output .= '</ol>';
}
if ($show_quote) {
$output .= '<span class="fa fa-quote-left"
aria-hidden="true"></span>';
}
$output .= '<div
class="sppb-carousel-inner">';
foreach ($settings->sp_testimonialpro_item as $key => $value)
{
$output .= '<div class="sppb-item ' . (($key
== 0) ? ' active' : '') . '">';
$name = (isset($value->title) && $value->title) ?
$value->title : '';
$avatar_img = isset($value->avatar) &&
$value->avatar ? $value->avatar : '';
$carousel_img_src = isset($avatar_img->src) ?
$avatar_img->src : $avatar_img;
if ($avatar_on_top == 1) {
$output .= $carousel_img_src ? '<img
src="' . $carousel_img_src . '" class="' .
$avatar_shape . '" alt="' . $name .
'">' : '';
}
if (isset($value->message) && $value->message) {
$output .= '<div
class="sppb-testimonial-message">' . $value->message .
'</div>';
}
$output .= '<div
class="sppb-addon-testimonial-pro-footer">';
if ($avatar_on_top != 1) {
$output .= $carousel_img_src ? '<img
src="' . $carousel_img_src . '" class="' .
$avatar_shape . '" alt="' . $name .
'">' : '';
}
$output .= '<div
class="testimonial-pro-client-name-wrap">';
$output .= $name ? '<span
class="sppb-addon-testimonial-pro-client-name">' . $name
. '</span>' : '';
$output .= (isset($value->url) && $value->url) ?
' <span
class="sppb-addon-testimonial-pro-client-url">' .
$value->url . '</span>' : '';
$output .= (isset($value->designation) &&
$value->designation) ? ' <span
class="sppb-addon-testimonial-pro-client-designation">' .
$value->designation . '</span>' : '';
$output .= '</div>';
$output .= '</div>';
$output .= '</div>';
}
$output .= '</div>';
if ($arrow_controls) {
$output .= '<a
href="#sppb-testimonial-pro-' . $this->addon->id .
'" class="left sppb-carousel-control"
data-slide="prev" aria-label="' .
Text::_('COM_SPPAGEBUILDER_ARIA_PREVIOUS') .
'"><i aria-hidden="true" class="fa ' .
$left_arrow . '"></i></a>';
$output .= '<a
href="#sppb-testimonial-pro-' . $this->addon->id .
'" class="right sppb-carousel-control"
data-slide="next" aria-label="' .
Text::_('COM_SPPAGEBUILDER_ARIA_NEXT') . '"><i
aria-hidden="true" class="fa ' . $right_arrow .
'"></i></a>';
}
$output .= '</div>';
return $output;
}
public function css()
{
$addon_id = '#sppb-addon-' . $this->addon->id;
$settings = $this->addon->settings;
$cssHelper = new CSSHelper($addon_id);
//Css output start
$css = '';
$settings->content_alignment =
CSSHelper::parseAlignment($settings, 'content_alignment');
$settings->speed = isset($settings->speed) ?
$settings->speed : 600;
$settings->avatar_width = isset($settings->avatar_width) ?
$settings->avatar_width : (object) ['xl' => 32];
// Avatar Style
$css .=
$cssHelper->generateStyle('.sppb-testimonial-pro', $settings,
['content_alignment' => 'text-align'], false);
$css .=
$cssHelper->generateStyle('.sppb-addon-testimonial-pro-footer',
$settings, ['content_alignment' =>
'justify-content'], false);
$css .= $cssHelper->generateStyle('.sppb-item >
img', $settings, ['avatar_width' => ['width',
'height']]);
$css .=
$cssHelper->generateStyle('.sppb-addon-testimonial-pro-footer
img', $settings, ['avatar_width' => ['width',
'height']]);
$css .= $cssHelper->generateStyle('.sppb-carousel-inner
> .sppb-item', $settings, ['speed' =>
['-webkit-transition-duration',
'transition-duration']], ['speed' =>
'ms']);
// Arrow Style
$arrowStyleProps = [
'arrow_height' => ['height',
'line-height'],
'arrow_width' => 'width',
'arrow_background' =>
'background-color',
'arrow_color' => 'color',
'arrow_margin' => 'margin',
'arrow_font_size' => 'font-size',
'arrow_border_width' => 'border-width',
'arrow_border_color' => 'border-color',
'arrow_border_radius' => 'border-radius'
];
$arrowStyleUnits = [
'arrow_background' => false,
'arrow_color' => false,
'arrow_border_color' => false
];
$arrowStyle =
$cssHelper->generateStyle('.sppb-testimonial-pro
.sppb-carousel-control', $settings, $arrowStyleProps,
$arrowStyleUnits);
//Arrow hover style
$arrowHoverStyle =
$cssHelper->generateStyle('.sppb-testimonial-pro
.sppb-carousel-control:hover', $settings,
['arrow_hover_background' => 'background-color',
'arrow_hover_color' => 'color',
'arrow_hover_border_color' => 'border-color'],
false);
// Icon Style
$iconStyle =
$cssHelper->generateStyle('.sppb-testimonial-pro
.fa-quote-left', $settings, ['icon_color' =>
'color', 'icon_size' => 'font-size'],
['icon_color' => false]);
// Content Style
$contentTypographyStyle =
$cssHelper->typography('.sppb-testimonial-message', $settings,
'content_typography', [
'font' =>
'content_font_family',
'size' => 'content_fontsize',
'line_height' =>
'content_lineheight',
'letter_spacing' =>
'content_letterspace',
'weight' =>
'content_fontstyle.weight',
'uppercase' =>
'content_fontstyle.uppercase',
'italic' =>
'content_fontstyle.italic',
'underline' =>
'content_fontstyle.underline',
]);
$contentStyle =
$cssHelper->generateStyle('.sppb-testimonial-message',
$settings, ['content_color' => 'color'], false);
//Name style
$nameTypographyStyle =
$cssHelper->typography('.sppb-addon-testimonial-pro-footer
.sppb-addon-testimonial-pro-client-name', $settings,
'name_typography', [
'font' => 'name_font_family',
'size' => 'name_font_size',
'line_height' => 'name_line_height',
'letter_spacing' => 'name_letterspace',
'weight' =>
'name_font_style.weight',
'uppercase' =>
'name_font_style.uppercase',
'italic' =>
'name_font_style.italic',
'underline' =>
'name_font_style.underline',
]);
$nameStyle =
$cssHelper->generateStyle('.sppb-addon-testimonial-pro-footer
.sppb-addon-testimonial-pro-client-name', $settings,
['name_color' => 'color'], ['name_color'
=> false]);
// Designation style
$designationTypographyStyle =
$cssHelper->typography('.sppb-addon-testimonial-pro-footer
.sppb-addon-testimonial-pro-client-designation', $settings,
'designation_typography', [
'font' =>
'designation_font_family',
'size' =>
'designation_font_size',
'line_height' =>
'designation_line_height',
'letter_spacing' =>
'designation_letterspace',
'weight' =>
'designation_font_style.weight',
'uppercase' =>
'designation_font_style.uppercase',
'italic' =>
'designation_font_style.italic',
'underline' =>
'designation_font_style.underline',
]);
$designationStyle =
$cssHelper->generateStyle('.sppb-addon-testimonial-pro-footer
.sppb-addon-testimonial-pro-client-designation', $settings,
['designation_color' => 'color',
'designation_margin' => 'margin',
'designation_block' => 'display:block;'],
['designation_color' => false, 'designation_margin'
=> false, 'designation_block' => false],
['designation_margin' => 'spacing']);
//Bullet style
$bulletStyle =
$cssHelper->generateStyle('.sppb-carousel-indicators li',
$settings, ['bullet_border_color' =>
'border-color'], false);
$bulletActiveStyle =
$cssHelper->generateStyle('.sppb-carousel-indicators
li.active', $settings, ['bullet_active_bg_color' =>
'background'], false);
$css .= $arrowStyle;
$css .= $arrowHoverStyle;
$css .= $iconStyle;
$css .= $contentTypographyStyle;
$css .= $contentStyle;
$css .= $nameTypographyStyle;
$css .= $nameStyle;
$css .= $designationTypographyStyle;
$css .= $designationStyle;
$css .= $bulletStyle;
$css .= $bulletActiveStyle;
return $css;
}
public static function getTemplate()
{
$lodash = new Lodash('#sppb-addon-{{ data.id }}');
$output = '
<#
let interval = (data.interval)? (data.interval*1000):5000
let autoplay = (data.autoplay)?
\'data-sppb-ride="sppb-carousel"\':""
let avatar_size = data.avatar_width || 32
let avatar_shape = data.avatar_shape ||
"sppb-avatar-circle"
let arrow_icon = (!_.isEmpty(data.arrow_icon)) ?
data.arrow_icon : "chevron";
let left_arrow ="";
let right_arrow = "";
if(arrow_icon=="angle_double"){
left_arrow ="fa-angle-double-left";
right_arrow = "fa-angle-double-right";
} else if(arrow_icon=="arrow"){
left_arrow ="fa-arrow-left";
right_arrow = "fa-arrow-right";
} else if(arrow_icon=="arrow_circle"){
left_arrow ="fa-arrow-circle-o-left";
right_arrow = "fa-arrow-circle-o-right";
} else if(arrow_icon=="long_arrow"){
left_arrow ="fa-long-arrow-left";
right_arrow = "fa-long-arrow-right";
} else if(arrow_icon=="angle"){
left_arrow ="fa-angle-left";
right_arrow = "fa-angle-right";
} else{
left_arrow ="fa-chevron-left";
right_arrow = "fa-chevron-right";
}
#>
<style type="text/css">';
// Control
$output .= $lodash->unit('width',
'.sppb-testimonial-pro .sppb-carousel-control',
'data.arrow_width', 'px', false);
$output .= $lodash->unit('height',
'.sppb-testimonial-pro .sppb-carousel-control',
'data.arrow_height', 'px', false);
$output .= $lodash->unit('font-size',
'.sppb-testimonial-pro .sppb-carousel-control',
'data.arrow_font_size', 'px', false);
$output .= $lodash->color('background-color',
'.sppb-testimonial-pro .sppb-carousel-control',
'data.arrow_background');
$output .= $lodash->color('color',
'.sppb-testimonial-pro .sppb-carousel-control',
'data.arrow_color');
$output .= $lodash->spacing('margin',
'.sppb-testimonial-pro .sppb-carousel-control',
'data.arrow_margin');
$output .= '<# if (data.arrow_height) { #>';
$output .= $lodash->unit('line-height',
'.sppb-testimonial-pro .sppb-carousel-control',
'data.arrow_height-data.arrow_border_width', 'px',
false);
$output .= '<# } #>';
$output .= $lodash->unit('border-width',
'.sppb-testimonial-pro .sppb-carousel-control',
'data.arrow_border_width', 'px', false);
$output .= $lodash->unit('border-radius',
'.sppb-testimonial-pro .sppb-carousel-control',
'data.arrow_border_radius', 'px', false);
$output .= $lodash->border('border-color',
'.sppb-testimonial-pro .sppb-carousel-control',
'data.arrow_border_color');
// Control hover
$output .= $lodash->border('border-color',
'.sppb-testimonial-pro .sppb-carousel-control:hover',
'data.arrow_hover_border_color');
$output .= $lodash->color('background-color',
'.sppb-testimonial-pro .sppb-carousel-control:hover',
'data.arrow_hover_background');
$output .= $lodash->color('color',
'.sppb-testimonial-pro .sppb-carousel-control:hover',
'data.arrow_hover_color');
// Image
$output .= $lodash->unit('width', '.sppb-item
> img, .sppb-addon-testimonial-pro-footer img',
'data.avatar_width', 'px');
$output .= $lodash->unit('height', '.sppb-item
> img, .sppb-addon-testimonial-pro-footer img',
'data.avatar_width', 'px');
// Quote
$output .= '<# if (data.show_quote) { #>';
$output .= $lodash->unit('font-size',
'.sppb-testimonial-pro .fa-quote-left',
'data.icon_size', 'px');
$output .= $lodash->color('color',
'.sppb-testimonial-pro .fa-quote-left',
'data.icon_color');
$output .= '<# } #>';
// Name
$output .= $lodash->color('color',
'.sppb-addon-testimonial-pro-footer
.sppb-addon-testimonial-pro-client-name',
'data.name_color');
$nameTypographyFallbcks = [
'font' =>
'data.name_font_family',
'size' =>
'data.name_font_size',
'line_height' =>
'data.name_line_height',
'letter_spacing' =>
'data.name_letterspace',
'weight' =>
'data.name_font_style?.weight',
'uppercase' =>
'data.name_font_style?.uppercase',
'italic' =>
'data.name_font_style?.italic',
'underline' =>
'data.name_font_style?.underline',
];
$output .=
$lodash->typography('.sppb-addon-testimonial-pro-footer
.sppb-addon-testimonial-pro-client-name',
'data.name_typography', $nameTypographyFallbcks);
// Designation
$output .= $lodash->color('color',
'.sppb-addon-testimonial-pro-footer
.sppb-addon-testimonial-pro-client-designation',
'data.designation_color');
$output .= '<# if (data.designation_block) { #>';
$output .= 'display:block;';
$output .= '<# } #>';
$output .= $lodash->spacing('margin',
'.sppb-addon-testimonial-pro-footer
.sppb-addon-testimonial-pro-client-designation',
'data.designation_margin');
$designationTypographyFallbcks = [
'font' =>
'data.designation_font_family',
'size' =>
'data.designation_font_size',
'line_height' =>
'data.designation_line_height',
'letter_spacing' =>
'data.designation_letterspace',
'weight' =>
'data.designation_font_style?.weight',
'uppercase' =>
'data.designation_font_style?.uppercase',
'italic' =>
'data.designation_font_style?.italic',
'underline' =>
'data.designation_font_style?.underline',
];
$output .=
$lodash->typography('.sppb-addon-testimonial-pro-footer
.sppb-addon-testimonial-pro-client-designation',
'data.designation_typography', $designationTypographyFallbcks);
// Content
$contentTypographyFallbcks = [
'font' =>
'data.content_font_family',
'size' =>
'data.content_fontsize',
'line_height' =>
'data.content_lineheight',
'letter_spacing' =>
'data.content_letterspace',
'weight' =>
'data.content_fontstyle?.weight',
'uppercase' =>
'data.content_fontstyle?.uppercase',
'italic' =>
'data.content_fontstyle?.italic',
'underline' =>
'data.content_fontstyle?.underline',
];
$output .=
$lodash->typography('.sppb-testimonial-message',
'data.content_typography', $contentTypographyFallbcks);
$output .= $lodash->border('border-color',
'.sppb-carousel-indicators li',
'data.bullet_border_color');
$output .= $lodash->border('border-color',
'.sppb-carousel-indicators li.active',
'data.bullet_active_bg_color');
$output .= $lodash->border('border-width',
'.sppb-carousel-indicators li',
'data.bullet_border_width');
$output .= $lodash->color('background-color',
'.sppb-carousel-indicators li.active',
'data.bullet_active_bg_color');
$output .= $lodash->color('color',
'.sppb-testimonial-message', 'data.content_color');
$output .= $lodash->spacing('margin',
'.sppb-testimonial-message', 'data.content_margin');
$output .= $lodash->alignment('text-align',
'#sppb-testimonial-pro-{{ data.id }}',
'data.content_alignment');
$output .= $lodash->alignment('justify-content',
'.sppb-addon-testimonial-pro-footer',
'data.content_alignment');
$output .= '
</style>
<div id="sppb-testimonial-pro-{{ data.id }}"
data-interval="{{ interval }}" class="sppb-carousel
sppb-testimonial-pro sppb-slide {{ data.class }}" {{{ autoplay }}}>
<# if(data.controls) { #>
<ol class="sppb-carousel-indicators">
<#
_.each(data.sp_testimonialpro_item, function(item,key){
let activeClass
if (key == 0) {
activeClass = "class=active"
}else{
activeClass = ""
}
#>
<li
data-sppb-target="#sppb-testimonial-pro-{{ data.id }}" {{
activeClass }} data-sppb-slide-to="{{ key }}"></li>
<# }) #>
</ol>
<# } #>
<# if(data.show_quote){ #>
<span class="fa
fa-quote-left"></span>
<# } #>
<div class="sppb-carousel-inner">
<#
_.each(data.sp_testimonialpro_item, function(itemSlide,
index) {
let slideActClass = ""
if (index == 0) {
slideActClass = " active"
} else {
slideActClass = ""
}
#>
<div class="sppb-item{{ slideActClass
}}">
<#
var avatarImg = {}
if (typeof itemSlide.avatar !==
"undefined" && typeof itemSlide.avatar.src !==
"undefined") {
avatarImg = itemSlide.avatar
} else {
avatarImg = {src: itemSlide.avatar}
}
if (data.avatar_on_top === 1 ||
data.avatar_on_top) {
if (!_.isEmpty(avatarImg.src)) { #>
<#
if(avatarImg.src.indexOf("https://") == -1 &&
avatarImg.src.indexOf("http://") == -1){ #>
<img class="{{ avatar_shape
}}" src=\'{{ pagebuilder_base + avatarImg.src }}\'
alt="">
<# } else { #>
<img class="{{ avatar_shape
}}" src=\'{{ avatarImg.src }}\' alt="">
<# } #>
<# }
} #>
<div class="sppb-testimonial-message
sp-editable-content"
id="addon-message-{{data.id}}-{{index}}" data-id={{data.id}}
data-fieldName="sp_testimonialpro_item-{{index}}-message">{{{
itemSlide.message }}}</div>
<div
class="sppb-addon-testimonial-pro-footer">
<# if (!data.avatar_on_top) {
if (avatarImg.src) { #>
<#
if(avatarImg.src.indexOf("https://") == -1 &&
avatarImg.src.indexOf("http://") == -1){ #>
<img class="{{ avatar_shape
}}" src=\'{{ pagebuilder_base + avatarImg.src }}\'
alt="">
<# } else { #>
<img class="{{ avatar_shape
}}" src=\'{{ avatarImg.src }}\' alt="">
<# } #>
<# }
} #>
<div
class="testimonial-pro-client-name-wrap">
<# if( !_.isEmpty(itemSlide.title) ) { #>
<span
class="sppb-addon-testimonial-pro-client-name">{{{
itemSlide.title }}}</span>
<# if( !_.isEmpty(itemSlide.url) ) { #>
<span
class="sppb-addon-testimonial-pro-client-url">{{ itemSlide.url
}}</span>
<# }
if( !_.isEmpty(itemSlide.designation) ) { #>
<span
class="sppb-addon-testimonial-pro-client-designation">{{{
itemSlide.designation }}}</span>
<# }
} #>
</div>
</div>
</div>
<# }) #>
</div>
<# if(data.arrow_controls) { #>
<a href="#sppb-testimonial-pro-{{ data.id
}}" class="left sppb-carousel-control"
data-slide="prev"><i class="fa
{{left_arrow}}"></i></a>
<a href="#sppb-testimonial-pro-{{ data.id
}}" class="right sppb-carousel-control"
data-slide="next"><i class="fa
{{right_arrow}}"></i></a>
<# } #>
</div>
';
return $output;
}
}