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/accordion/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);

$items = $element->params->get('items', []);
if (empty($items)) {
   return;
}
$slugs = [];

$element->addClass('jdb-accordion-element');

$collapsible = $element->params->get('accordionCollapsible', true);
$multiple = $element->params->get('accordionMultiple', false);
if ($collapsible) {
   $firstactive = $element->params->get('accordionFirstActive', true);
} else {
   $firstactive = false;
}

$titleTag = $element->params->get('titleTag', '');
$titleTag = empty($titleTag) ? 'span' : $titleTag;

$faqSchema = $element->params->get('faqSchema', false);
?>

<ul <?php echo $faqSchema ? 'itemscope itemtype="https://schema.org/FAQPage" ' : ''; ?>jdb-accordion="collapsible:<?php echo $collapsible ? 'true' : 'false'; ?>;active:false;multiple:<?php echo $multiple ? 'true' : 'false'; ?>" id="jdb-accordion-<?php echo $element->id; ?>">
   <?php foreach ($items as $item) {
      $slugs[] = '#' . JDPageBuilder\Helpers\StringHelper::kebabCase($item->title);
   ?>
      <li <?php echo $faqSchema ? 'itemscope itemprop="mainEntity" itemtype="https://schema.org/Question" ' : ''; ?>>
         <a class="jdb-accordion-title jdb-caret-<?php echo $element->params->get('accordionIconAlignment', 'right'); ?>" name href="#" id="<?php echo JDPageBuilder\Helpers\StringHelper::kebabCase($item->title); ?>">
            <<?php echo $titleTag; ?><?php echo $faqSchema ? ' itemprop="name"' : ''; ?> class="jdb-accordion-text">
               <?php
               if (!empty(@$item->icon)) {
                  \JDPageBuilder\Builder::loadFontLibraryByIcon(@$item->icon);
               ?>
                  <i class="jdb-accordion-icon <?php echo $item->icon; ?>"></i>
               <?php } ?>
               <?php echo $item->title; ?>
            </<?php echo $titleTag; ?>>
            <?php
            echo JDPageBuilder\Helper::getCaretValue($element->params->get('accordionIcon', 'plus'));
            ?>
         </a>
         <div <?php echo $faqSchema ? 'itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer" ' : ''; ?>class="jdb-accordion-content">
            <div <?php echo $faqSchema ? 'itemprop="text"' : ''; ?>>
               <?php echo $item->content; ?>
            </div>
         </div>
      </li>
   <?php } ?>
</ul>

<?php
$itemStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li');
$itemHoverStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li:not(.jdb-active):hover');
$itemActiveStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li.jdb-active');

$titleStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li > .jdb-accordion-title');
$titleTextStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li > .jdb-accordion-title .jdb-accordion-text');
$titleHoverStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li:not(.jdb-active):hover > .jdb-accordion-title');
$titleActiveStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li.jdb-active > .jdb-accordion-title');
$titleActiveTextStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li.jdb-active > .jdb-accordion-title .jdb-accordion-text');


$contentStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li > div > div');

$caretStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li > a > .jdb-caret');
$caretActiveStyle = new JDPageBuilder\Element\ElementStyle('> .jdb-accordion > li.jdb-active > a > .jdb-caret');


$element->addChildrenStyle([$itemStyle, $itemHoverStyle, $itemActiveStyle, $titleStyle, $titleTextStyle, $titleHoverStyle, $titleActiveStyle, $contentStyle, $caretStyle, $caretActiveStyle, $titleActiveTextStyle]);


// Item Styling
$spaceBetween = $element->params->get('itemSpaceBetween', null);
if (!empty($spaceBetween)) {
   foreach (\JDPageBuilder\Helper::$devices as $deviceKey => $device) {
      if (isset($spaceBetween->{$deviceKey}) && JDPageBuilder\Helper::checkSliderValue($spaceBetween->{$deviceKey})) {
         $itemStyle->addCss("margin-bottom", $spaceBetween->{$deviceKey}->value . 'px', $device);
      }
   }
}

$itemBorderStyle = $element->params->get('itemBorderStyle', 'none');
$itemStyle->addCss("border-style", $itemBorderStyle);
if ($itemBorderStyle != 'none') {
   $borderWidth = $element->params->get('itemBorderWidth', null);
   if (!empty($borderWidth)) {
      foreach (JDPageBuilder\Helper::$devices as $deviceKey => $device) {
         if (isset($borderWidth->{$deviceKey}) && !empty($borderWidth->{$deviceKey})) {
            $css = JDPageBuilder\Helper::spacingValue($borderWidth->{$deviceKey}, "border");
            $itemStyle->addStyle($css, $device);
         }
      }
   } else {
      $itemStyle->addCss("border-width", "1px");
   }

   $itemStyle->addCss("border-color", $element->params->get('itemBorderColor', ''));
   $itemHoverStyle->addCss("border-color", $element->params->get('itemBorderColorHover', ''));
   $itemActiveStyle->addCss("border-color", $element->params->get('itemBorderColorActive', ''));
}

$borderRadius = $element->params->get('itemBorderRadius', 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");
         $itemStyle->addStyle($css, $device);
         $titleStyle->addStyle($css, $device);
         $contentStyle->addStyle($css, $device);

         $titleStyle->addCss("border-bottom-right-radius", 0, $device);
         $titleStyle->addCss("border-bottom-left-radius", 0, $device);
         $contentStyle->addCss("border-top-right-radius", 0, $device);
         $contentStyle->addCss("border-top-left-radius", 0, $device);
      }
   }
}

$boxShadow = $element->params->get('itemBoxShadow', null);
if (!empty($boxShadow)) {
   $itemStyle->addCss('box-shadow', $boxShadow);
}

// Title Styling

$titleTextStyle->addCss("color", $element->params->get('titleColor', ''));

$typography = $element->params->get('accordionTitleTypography', null);
if (!empty($typography)) {
   foreach (JDPageBuilder\Helper::$devices as $deviceKey => $device) {
      if (isset($typography->{$deviceKey}) && !empty($typography->{$deviceKey})) {
         $titleTextStyle->addStyle(JDPageBuilder\Helper::typographyValue($typography->{$deviceKey}), $device);
         if (isset($typography->{$deviceKey}->size) && is_numeric($typography->{$deviceKey}->size)) {
            $caretStyle->addCss("min-width", "calc(" . $typography->{$deviceKey}->size . $typography->{$deviceKey}->sizeUnit . " + 10px)", $device);
            $caretStyle->addCss("max-width", "calc(" . $typography->{$deviceKey}->size . $typography->{$deviceKey}->sizeUnit . " + 10px)", $device);
            $caretStyle->addCss("min-height", "calc(" . $typography->{$deviceKey}->size . $typography->{$deviceKey}->sizeUnit . " + 10px)", $device);
            $caretStyle->addCss("max-width", "calc(" . $typography->{$deviceKey}->size . $typography->{$deviceKey}->sizeUnit . " + 10px)", $device);
            $caretStyle->addCss("line-height", "calc(" . $typography->{$deviceKey}->size . $typography->{$deviceKey}->sizeUnit . " + 10px)", $device);
            $caretStyle->addCss("font-size", $typography->{$deviceKey}->size . $typography->{$deviceKey}->sizeUnit, $device);
         }
      }
   }
}

$padding = $element->params->get('accordionTitlePadding', null);
if (!empty($padding)) {
   foreach (JDPageBuilder\Helper::$devices as $deviceKey => $device) {
      if (isset($padding->{$deviceKey}) && !empty($padding->{$deviceKey})) {
         $titleStyle->addStyle(JDPageBuilder\Helper::spacingValue($padding->{$deviceKey}, "padding"), $device);
      }
   }
} else {
   $titleStyle->addCss("padding", "10px");
}

$titleBorderStyle = $element->params->get('titleBorderStyle', 'solid');
$titleStyle->addCss("border-style", $titleBorderStyle);
if ($titleBorderStyle != 'none') {
   $borderWidth = $element->params->get('titleBorderWidth', null);
   if ($borderWidth != null) {
      foreach (JDPageBuilder\Helper::$devices as $deviceKey => $device) {
         if (isset($borderWidth->{$deviceKey}) && !empty($borderWidth->{$deviceKey})) {
            $titleStyle->addStyle(JDPageBuilder\Helper::spacingValue($borderWidth->{$deviceKey}, "border"), $device);
         }
      }
   }

   $titleStyle->addCss("border-color", $element->params->get('titleBorderColor', ''));
   $titleHoverStyle->addCss("border-color", $element->params->get('titleBorderColorHover', ''));
   $titleActiveStyle->addCss("border-color", $element->params->get('titleBorderColorActive', ''));
}

// hover

$titleStyle->addCss("background-color", $element->params->get('titleBackground', ''));
$titleActiveTextStyle->addCss("color", $element->params->get('titleColorActive', ''));
$titleActiveStyle->addCss("background-color", $element->params->get('titleBackgroundActive', ''));

$contentStyle->addCss("color", $element->params->get('contentColor', ''));
$contentStyle->addCss("background-color", $element->params->get('contentBackground', ''));
$contentStyle->addCss("background-color", $element->params->get('contentBackground', ''));

// Content Styling

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

$padding = $element->params->get('accordionContentPadding', null);
if (!empty($padding)) {
   foreach (JDPageBuilder\Helper::$devices as $deviceKey => $device) {
      if (isset($padding->{$deviceKey}) && !empty($padding->{$deviceKey})) {
         $contentStyle->addStyle(JDPageBuilder\Helper::spacingValue($padding->{$deviceKey}, "padding"), $device);
      }
   }
} else {
   $contentStyle->addCss("padding", "10px");
}


$contentBorderStyle = $element->params->get('contentBorderStyle', 'solid');
$contentStyle->addCss("border-style", $contentBorderStyle);

if ($contentBorderStyle != 'none') {
   $borderWidth = $element->params->get('contentBorderWidth', 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");
            $contentStyle->addStyle($css, $device);
         }
      }
   }

   $contentStyle->addCss("border-color", $element->params->get('contentBorderColor', ''));
}


// caret

$caretStyle->addCss("color", $element->params->get('caretColor', ''));
$caretStyle->addCss("background-color", $element->params->get('caretBackgroundColor', ''));
$caretActiveStyle->addCss("color", $element->params->get('caretColorActive', ''));
$caretActiveStyle->addCss("background-color", $element->params->get('caretBackgroundColorActive', ''));


$script = 'if(window.location.hash && ' . \json_encode($slugs) . '.indexOf(window.location.hash) > ' . ($firstactive ? '0' : '-1') . '){ JDBPack.accordion(\'#jdb-accordion-' . $element->id . '\').toggle(' . \json_encode($slugs) . '.indexOf(window.location.hash), false); }else{
   var firstactive = ' . ($firstactive ? 'true' : 'false') . ';
   if(firstactive){
      JDBPack.accordion(\'#jdb-accordion-' . $element->id . '\').toggle(0, false);
   }
}';
JDPageBuilder\Builder::addScript($script, 'body');

?>