HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/confeduphaar/backip-old-files/plugins/system/jdbuilder/elements/button/tmpl/default.php
<?php

/**
 * @package    JD Builder
 * @author     Team Joomdev <info@joomdev.com>
 * @copyright  2020 www.joomdev.com
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;
extract($displayData);

// button title
$defaultButtonTitle = $element->params->exists('buttonText') ? '' : 'Button';
$buttonTitle = $element->params->get('buttonText', $defaultButtonTitle);

$buttonClass = [];
$buttonClass[] = 'jdb-button';

$buttonWrapperStyle = new JDPageBuilder\Element\ElementStyle('.jdb-button-wrapper');
$buttonStyle = new JDPageBuilder\Element\ElementStyle('.jdb-button-link');
$buttonHoverStyle = new JDPageBuilder\Element\ElementStyle('.jdb-button-link:hover');

$element->addChildrenStyle([$buttonStyle, $buttonHoverStyle, $buttonWrapperStyle]);

$class = ['jdb-button-link'];

// button type
$buttonType = $element->params->get('buttonType', 'primary');
$buttonClass[] = 'jdb-button-' . $buttonType;

// button size
$buttonSize = $element->params->get('buttonSize', '');
if (!empty($buttonSize)) {
   $buttonClass[] = 'jdb-button-' . $buttonSize;
}

$alignment = $element->params->get('buttonAlignment', null);
if (!empty($alignment)) {
   $alignment = is_object($alignment) ? $alignment : \json_decode('{"md": "' . $alignment . '"}');
   foreach (JDPageBuilder\Helper::$devices as $deviceKey => $device) {
      if (isset($alignment->{$deviceKey}) && !empty($alignment->{$deviceKey})) {
         $align = $alignment->{$deviceKey};
         if ($align != 'block') {
            $buttonWrapperStyle->addCss('flex', '0 0 auto', $device);
            $buttonWrapperStyle->addCss('-ms-flex', '0 0 auto', $device);
            $buttonWrapperStyle->addCss('width', 'auto', $device);
            if ($align == 'center') {
               $buttonWrapperStyle->addCss('margin-right', 'auto', $device);
               $buttonWrapperStyle->addCss('margin-left', 'auto', $device);
            } else if ($align == 'right') {
               $buttonWrapperStyle->addCss('margin-right', 'initial', $device);
               $buttonWrapperStyle->addCss('margin-left', 'auto', $device);
            } else {
               $buttonWrapperStyle->addCss('margin-right', 'auto', $device);
               $buttonWrapperStyle->addCss('margin-left', 'initial', $device);
            }
         } else {
            $buttonWrapperStyle->addCss('flex', '0 0 100%', $device);
            $buttonWrapperStyle->addCss('-ms-flex', '0 0 100%', $device);
            $buttonWrapperStyle->addCss('width', '100%', $device);
            $buttonWrapperStyle->addCss('margin-right', 'initial', $device);
            $buttonWrapperStyle->addCss('margin-left', 'initial', $device);
         }
      }
   }
}


// button link
$link = $element->params->get('link', '#');
$link = empty($link) ? '#' : $link;

// link target
$linkTargetBlank = $element->params->get('linkTargetBlank', FALSE);
$linkTarget = $linkTargetBlank ? ' target="_blank"' : "";

// link follow
$linkNoFollow = $element->params->get('linkNoFollow', FALSE);
$linkRel = $linkNoFollow ? ' rel="nofollow"' : "";

// Animation
$animation = $element->params->get('buttonAnimation', '');
if (!empty($animation)) {
   $class[] = 'jdb-hover-' . $animation;
}

// button icon
$iconHTML = '';
$buttonIcon = $element->params->get('buttonIcon', '');
$iconPosition = $element->params->get('iconPosition', 'right');
if (!empty($buttonIcon)) {
   $iconStyle = new JDPageBuilder\Element\ElementStyle('.jdb-button-link > .jdb-button-icon');

   $element->addChildStyle($iconStyle);
   $iconAnimation = $element->params->get('iconAnimation', '');
   if (!empty($iconAnimation)) {
      $class[] = 'jdb-hover-' . $iconAnimation;
   }

   \JDPageBuilder\Builder::loadFontLibraryByIcon($buttonIcon);
   $iconHTML = '<span class="jdb-button-icon jdb-hover-icon ' . $buttonIcon . ' jdb-button-icon-' . $iconPosition . '"></span>';

   $iconSpacing = $element->params->get('iconSpacing', null);
   if (JDPageBuilder\Helper::checkSliderValue($iconSpacing)) {
      if ($iconPosition == "right") {
         $iconStyle->addCss("margin-left", $iconSpacing->value . "px");
      } else {
         $iconStyle->addCss("margin-right", $iconSpacing->value . "px");
      }
   }
}

// Background
$buttonStyle->addCss("background-color", $element->params->get('buttonBackgroundColor', ''));
$buttonHoverStyle->addCss("background-color", $element->params->get('buttonBackgroundColorHover', ''));

// Text Color
$buttonStyle->addCss("color", $element->params->get('buttonTextColor', ''));
$buttonHoverStyle->addCss("color", $element->params->get('buttonTextColorHover', ''));


// Border Color
$buttonStyle->addCss("border-color", $element->params->get('buttonBorderColor', ''));
$buttonHoverStyle->addCss("border-color", $element->params->get('buttonBorderColorHover', ''));

// Gradient
$buttonStyle->addCss("background-image", $element->params->get('buttonGradient', ''));
$buttonHoverStyle->addCss("background-image", $element->params->get('buttonGradientHover', ''));
if (!empty($element->params->get('buttonGradient', '')) && empty($element->params->get('buttonGradientHover', ''))) {
   $buttonHoverStyle->addCss("background-image", 'none');
}

// Typography
$typography = $element->params->get('buttonTypography', null);
if (!empty($typography)) {
   foreach (JDPageBuilder\Helper::$devices as $deviceKey => $device) {
      if (isset($typography->{$deviceKey}) && !empty($typography->{$deviceKey})) {
         $buttonStyle->addStyle(JDPageBuilder\Helper::typographyValue($typography->{$deviceKey}), $device);
      }
   }
}

// Padding
$padding = $element->params->get('buttonPadding', null);
if (!empty($padding)) {
   foreach (JDPageBuilder\Helper::$devices as $deviceKey => $device) {
      if (isset($padding->{$deviceKey}) && !empty($padding->{$deviceKey})) {
         $buttonStyle->addStyle(JDPageBuilder\Helper::spacingValue($padding->{$deviceKey}, "padding"), $device);
      }
   }
}

// Border
$borderType = $element->params->get('buttonBorderStyle', 'solid');
$buttonStyle->addCss("border-style", $borderType);
if ($borderType != 'none') {
   $borderWidth = $element->params->get('buttonBorderWidth', null);
   if ($borderWidth != null) {
      foreach (JDPageBuilder\Helper::$devices as $deviceKey => $device) {
         if (isset($borderWidth->{$deviceKey}) && !empty($borderWidth->{$deviceKey})) {
            $css = JDPageBuilder\Helper::spacingValue($borderWidth->{$deviceKey}, "border");
            $buttonStyle->addStyle($css, $device);
         }
      }
   }
}

// Radius
$borderRadius = $element->params->get('buttonBorderRadius', null);
if (!empty($borderRadius)) {
   foreach (JDPageBuilder\Helper::$devices as $deviceKey => $device) {
      if (isset($borderRadius->{$deviceKey}) && !empty($borderRadius->{$deviceKey})) {
         $css = JDPageBuilder\Helper::spacingValue($borderRadius->{$deviceKey}, "radius");
         $buttonStyle->addStyle($css, $device);
      }
   }
}

// shadow
$buttonStyle->addCss("box-shadow", $element->params->get('buttonBoxShadow', ''));
?>
<div class="jdb-button-container">
   <div class="jdb-button-wrapper">
      <div class="<?php echo implode(' ', $buttonClass); ?>">
         <a class="<?php echo implode(" ", $class); ?>" href="<?php echo $link; ?>" title="<?php echo $buttonTitle; ?>" <?php echo $linkTarget; ?><?php echo $linkRel; ?>>
            <?php
            if ($iconPosition == 'left') {
               echo $iconHTML;
            }
            echo $buttonTitle;
            if ($iconPosition == 'right') {
               echo $iconHTML;
            }
            ?>
         </a>
      </div>
   </div>
</div>